Ctrl K

Слепые зоны в галерее

Средняя
Зал галереи — сетка из rows строк и cols столбцов, клетки нумеруются с нуля. В клетках cameras[i] = [r, c] висят камеры, в клетках pillars[j] = [r, c] стоят колонны. Камера смотрит по прямой во все четыре стороны — вверх, вниз, влево и вправо — и видит каждую клетку, пока луч не упрётся в колонну, другую камеру или край зала. Клетку считают просматриваемой, если её видит хотя бы одна камера. Верните, сколько свободных клеток (без камеры и без колонны) не видит ни одна камера.
Пример 1
rows=3, cols=4, cameras=[[0, 0]], pillars=[[0, 2], [2, 0]] → 7

Камера в углу видит вправо только клетку (0, 1) — дальше колонна, и вниз только (1, 0) — дальше колонна. Из 12 клеток 3 заняты, 2 видны, остаётся 7 невидимых.

Пример 2
rows=2, cols=3, cameras=[[0, 1], [1, 1]], pillars=[[1, 0]] → 0

Камеры смотрят друг на друга, но вторая камера закрывает обзор первой вниз. Верхняя видит (0, 0) и (0, 2), нижняя видит (1, 2), а влево ей мешает колонна. Все свободные клетки видны — ответ 0.

Пример 3
rows=1, cols=5, cameras=[[0, 4]], pillars=[[0, 3]] → 3
Ограничения
  • 1 ≤ rows, cols ≤ 10⁵
  • 2 ≤ rows · cols ≤ 10⁵
  • 1 ≤ len(cameras), len(pillars) ≤ 5 · 10⁴
  • 0 ≤ r < rows, 0 ≤ c < cols
  • Все клетки из cameras и pillars различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЧтение по спирали СредняяКвадрат, пронумерованный по спирали СредняяСледующий шаг колонии клеток СредняяЗигзаг по диагоналям СредняяТри в ряд до упора Средняя
загружаем Python…
Вход
rows=3, cols=4, cameras=[[0, 0]], pillars=[[0, 2], [2, 0]]
Ожидается
7

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