m × n: panel[i][j] = 1 — в клетке есть блок, 0 — пусто. Строка 0 прилегает к потолку.
Блок **держится**, если он в строке 0 или хотя бы один из четырёх соседних по стороне блоков держится.
По панели по очереди наносят удары strikes[i] = [row, col]. Удар выбивает блок из этой клетки, если он там есть. После этого все блоки, которые перестали держаться, сразу падают и исчезают из панели (на другие блоки они не ложатся).
Верните массив, где i-й элемент — сколько блоков упало после i-го удара. Сам выбитый блок не считается. Удар может прийтись в пустую клетку — тогда ничего не падает.panel=[[0, 1, 0], [1, 1, 1], [1, 0, 1]], strikes=[[1, 1]] → [4]
Весь нижний узор держался только на центральном блоке. Когда его выбили, падают четыре блока: два по бокам во втором ряду и два в третьем.
panel=[[1, 1], [1, 1]], strikes=[[1, 0], [0, 1], [0, 0]] → [0, 1, 0]
Первый удар убирает один блок, остальные держатся. После второго удара у блока (1, 1) не остаётся опоры: (0, 1) только что выбит, а (1, 0) выбит раньше, поэтому он падает. Третий удар выбивает последний блок, падать больше нечему.
panel=[[1, 0], [0, 0]], strikes=[[1, 1]] → [0]
Удар пришёлся в пустую клетку — ничего не падает.
m, n ≤ 200panel[i][j] равно 0 или 1len(strikes) ≤ 4·10⁴row < m, 0 ≤ col < npanel=[[0, 1, 0], [1, 1, 1], [1, 0, 1]], strikes=[[1, 1]]
[4]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 87 тестов на сервере, включая скрытые.