Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 ферзей на доске, определите, есть ли среди них пара бьющих друг друга.
- Формат входных данных
- Программа получает на вход восемь пар чисел, каждое число от 1 до 8 - координаты 8 ферзей.
- Формат выходных данных
- Если ферзи не бьют друг друга, выведите слово NO, иначе выведите YES.
- Sample Input 1:
- 1 7
- 2 4
- 3 2
- 4 8
- 5 6
- 6 1
- 7 3
- 8 5
- Sample Output 1:
- NO
- Sample Input 2:
- 1 8
- 2 7
- 3 6
- 4 5
- 5 4
- 6 3
- 7 2
- 8 1
- Sample Output 2:
- YES
- */
- #include <iostream>
- #include <vector>
- using namespace std;
- const int DIM = 8; // DIM — количество ферзей и сторона шахматной доски (количество клеток на стороне).
- int main () {
- bool Dead = true; // предполагаем, что все ферзи в «мертвой» зоне
- vector <int> x (DIM), y (DIM);
- /* INPUT */
- for (int i = 0; i < DIM; i++)
- cin >> x [i] >> y [i];
- /* PROCESSING */
- for (int i = 0; i < (DIM - 1) && Dead; i++)
- for (int j = i + 1; j < DIM && Dead; j++) { // простой перебор пар ферзей
- int dex = x [i] - x [j]; // ± расстояние по горизонтали
- int dey = y [i] - y [j]; // ± расстояние по вертикали
- if (0 == dex || 0 == dey || dex == dey || -dex == dey)
- Dead = false; // пара «бьющихся» ферзей обнаружена!
- }
- /* OUTPUT */
- cout << (Dead ? "NO" : "YES"); // ответ на задачу
- return 0;
- }
- /*
- ✓ ПРИМЕЧАНИЕ: программа может быть адаптирована для квадратной доски с произвольной стороной. Для этого достаточно изменить значение константы DIM.
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement