Задача
Для клетки с координатами $\left(x, y\right)$ в таблице размером $M\times N$ выведите координаты ее соседей. Соседними называются клетки, имеющие общую сторону.
Входные данные
Даны натуральные числа $M, N, x, y \left(1 \leqslant x \leqslant M \leqslant 109, 1 \leqslant y \leqslant N \leqslant 109\right).$
Выходные данные
В выходной файл выведите пары координат соседей этой клетки в произвольном порядке.
Тесты
Входные данные | Выходные данные |
---|---|
3 3 2 2 |
1 2 2 1 2 3 3 2 |
23 23 21 13 |
20 13 22 13 21 12 21 14 |
11 8 10 5 |
9 5 11 5 10 4 10 6 |
Код решения
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> using namespace std; int x, y, n, m; int main() { cin >> n >> m >> x >> y; if (x > 1) cout << x - 1 << " " << y << endl; if (x < n) cout << x + 1 << " " << y << endl; if (y > 1) cout << x << " " << y - 1 << endl; if (y < m) cout << x << " " << y + 1 << endl; } |
Решение
Для решения этой задачи стоит просмотреть все варианты координат соседних точек. То есть, нужно прибавить единицу к абсциссам и ординатам заданной точки. Но стоит учесть, что таблица у нас ограничена: $1 \leqslant x \leqslant M, 1 \leqslant y \leqslant N$
Ссылки
Условие решения на e-olymp.com
Код решения на ideone.com