Ctrl K

Тёмные клетки в окнах 2×2

Средняя
Пол склада — сетка из rows строк и cols столбцов, клетки нумеруются с нуля. Часть плиток тёмная: их координаты [r, c] перечислены в списке dark, все остальные плитки светлые. Окном назовём любой квадрат 2×2 внутри сетки. Окно с левым верхним углом в (r, c) (где 0 ≤ r < rows − 1, 0 ≤ c < cols − 1) состоит из клеток (r, c), (r, c + 1), (r + 1, c) и (r + 1, c + 1). Верните массив из пяти чисел, где i-е число — сколько окон содержат ровно i тёмных клеток. Сетка может быть огромной, а тёмных клеток относительно мало — перебирать все окна не стоит.
Пример 1
rows=2, cols=3, dark=[[0, 1]] → [0, 2, 0, 0, 0]

Окон два: с левым верхним углом в (0, 0) и в (0, 1). Тёмная клетка (0, 1) попадает в оба, поэтому оба окна содержат ровно одну тёмную клетку.

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

Окно с углом (0, 0) целиком тёмное (4), окна с углами (0, 1) и (1, 0) содержат по две тёмные клетки, окно с углом (1, 1) — одну.

Пример 3
rows=4, cols=2, dark=[] → [3, 0, 0, 0, 0]

Тёмных клеток нет, все три окна пустые.

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

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