aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorInigoGutierrez <inigogf.95@gmail.com>2019-10-12 22:53:20 +0200
committerInigoGutierrez <inigogf.95@gmail.com>2019-10-12 22:53:20 +0200
commit28f18e1a3bbb833e9a18725acb7d4b261e53c9d4 (patch)
tree1e980b86ada82114c6d2aff97327267e85bd7e7d
parent4003baa8d9b87c0cb7f07d32d6d3a7d0e67fbf98 (diff)
downloadAceptaElReto-28f18e1a3bbb833e9a18725acb7d4b261e53c9d4.tar.gz
AceptaElReto-28f18e1a3bbb833e9a18725acb7d4b261e53c9d4.zip
Resolviendo 244: Reinas Atacadas.
-rw-r--r--c/244_reinasAtacadas.cpp39
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;
+}