diff options
author | InigoGutierrez <inigogf.95@gmail.com> | 2019-10-12 22:53:20 +0200 |
---|---|---|
committer | InigoGutierrez <inigogf.95@gmail.com> | 2019-10-12 22:53:20 +0200 |
commit | 28f18e1a3bbb833e9a18725acb7d4b261e53c9d4 (patch) | |
tree | 1e980b86ada82114c6d2aff97327267e85bd7e7d /c | |
parent | 4003baa8d9b87c0cb7f07d32d6d3a7d0e67fbf98 (diff) | |
download | AceptaElReto-28f18e1a3bbb833e9a18725acb7d4b261e53c9d4.tar.gz AceptaElReto-28f18e1a3bbb833e9a18725acb7d4b261e53c9d4.zip |
Resolviendo 244: Reinas Atacadas.
Diffstat (limited to 'c')
-rw-r--r-- | c/244_reinasAtacadas.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
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 <iostream> + +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; +} |