From 28f18e1a3bbb833e9a18725acb7d4b261e53c9d4 Mon Sep 17 00:00:00 2001 From: InigoGutierrez Date: Sat, 12 Oct 2019 22:53:20 +0200 Subject: Resolviendo 244: Reinas Atacadas. --- c/244_reinasAtacadas.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 c/244_reinasAtacadas.cpp diff --git a/c/244_reinasAtacadas.cpp b/c/244_reinasAtacadas.cpp new file mode 100644 index 0000000..6b3f2f7 --- /dev/null +++ b/c/244_reinasAtacadas.cpp @@ -0,0 +1,39 @@ +#include + +int main(void) { + int lado, reinas; + int *filas, *columnas; + int i, j; + int atacadas; + std::cin >> lado; + std::cin >> reinas; + while (lado) { + // Leer tamaño, número de reinas y posición de cada una + filas = new int [lado]; + columnas = new int [lado]; + for (i = 0; i < reinas; i++) { + std::cin >> filas[i]; + std::cin >> columnas[i]; + } + atacadas = 0; + for (i = 0; i < reinas-1 && !atacadas; i++) { + for (j = i+1; j < reinas && !atacadas; j++) { + // Comprobar choques cartesianos: no hay reinas que compartan fila o columna + if (filas[i] == filas[j] || columnas[i] == columnas[j]) + atacadas = 1; + // Comprobar choques diagonales: no hay la misma distancia entre la fila y la columna para dos reinas + else if (abs(filas[i] - filas[j]) == abs(columnas[i] - columnas[j])) + atacadas = 1; + } + } + delete [] filas; + delete [] columnas; + if (atacadas) + std::cout << "SI\n"; + else + std::cout << "NO\n"; + std::cin >> lado; + std::cin >> reinas; + } + return 0; +} -- cgit v1.2.1