Ctrl K

Лампы на огромной доске

Сложная
Есть квадратная доска n × n, в каждой клетке которой стоит лампа, изначально выключенная. Список lamps перечисляет включённые лампы: [r, c] — строка и столбец. Одна клетка может встретиться в списке несколько раз — лампа всё равно одна. Включённая лампа освещает свою клетку и все клетки в той же строке, том же столбце и на обеих диагоналях, проходящих через неё. Далее по очереди идут проверки checks, каждая — клетка [r, c]. Для проверки сначала определите, освещена ли эта клетка, а затем выключите лампу в ней и во всех восьми соседних клетках (по стороне или по углу), если они горят. Верните список: для каждой проверки 1, если клетка была освещена, и 0, если нет.
Пример 1
n=6, lamps=[[2, 3], [5, 0]], checks=[[0, 1], [1, 3], [0, 3]] → [1, 1, 0]

(0, 1) лежит на одной диагонали с лампой (2, 3) — светло. (1, 3) в одном столбце с ней — тоже светло, и лампа (2, 3) гаснет как соседняя. Клетку (0, 3) теперь не освещает никто: лампа (5, 0) не делит с ней ни строку, ни столбец, ни диагональ.

Пример 2
n=4, lamps=[[1, 1], [1, 1]], checks=[[1, 2], [3, 3]] → [1, 0]

Лампа указана дважды, но это одна лампа. (1, 2) в одной строке с ней — светло, и она гаснет как соседняя. Дальше доска тёмная.

Ограничения
  • 1 ≤ n ≤ 10⁹
  • 0 ≤ len(lamps), len(checks) ≤ 20000
  • 0 ≤ r, c < n
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиДорешать судоку СложнаяНаименьшее отсутствующее положительное СложнаяВсе способы расставить пробелы СложнаяЗвёзды на одной прямой СложнаяОстрова после каждой засыпки Сложная
загружаем Python…
Вход
n=6, lamps=[[2, 3], [5, 0]], checks=[[0, 1], [1, 3], [0, 3]]
Ожидается
[1, 1, 0]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 85 тестов на сервере, включая скрытые.