diff options
-rw-r--r-- | c/244_reinasAtacadas.cpp | 22 |
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 |