aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--c/244_reinasAtacadas.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/c/244_reinasAtacadas.cpp b/c/244_reinasAtacadas.cpp
index 6b3f2f7..c7a9254 100644
--- a/c/244_reinasAtacadas.cpp
+++ b/c/244_reinasAtacadas.cpp
@@ -1,33 +1,37 @@
#include <iostream>
+#include <vector>
int main(void) {
int lado, reinas;
- int *filas, *columnas;
+ int row, col;
+ std::vector<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];
+ filas.clear();
+ columnas.clear();
for (i = 0; i < reinas; i++) {
- std::cin >> filas[i];
- std::cin >> columnas[i];
+ std::cin >> row;
+ std::cin >> col;
+ filas.push_back(row);
+ columnas.push_back(col);
}
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
+ // 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
+ // 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