Ctrl K

Блоки с невозрастающими строками

Сложная
Дана прямоугольная таблица grid из m строк и n столбцов и число cap. Блоком назовём любую непустую прямоугольную часть таблицы: несколько подряд идущих строк, пересечённых с несколькими подряд идущими столбцами. Блок хороший, если: - все его значения не больше cap; - в каждой его строке значения не возрастают слева направо (соседние могут быть равны). Верните количество хороших блоков. Блоки различаются положением в таблице, даже если их содержимое совпадает.
Пример 1
grid=[[5, 2, 2], [3, 3, 1]], cap=3 → 12

Значения не больше 3 и строки, которые не возрастают слева направо: пять одиночных клеток (все, кроме 5), отрезки строк [2, 2], [3, 3], [3, 1] и [3, 3, 1], два столбца высотой 2 — [[2], [3]] и [[2], [1]] — и блок 2×2 [[2, 2], [3, 1]]. Всего 12.

Пример 2
grid=[[1, 2], [1, 2]], cap=5 → 6

Строки [1, 2] возрастают, поэтому годятся только блоки шириной 1: четыре клетки и два столбца высотой 2.

Пример 3
grid=[[7]], cap=6 → 0

Единственная клетка больше cap.

Ограничения
  • 1 ≤ m, n ≤ 1000
  • −10⁹ ≤ grid[i][j], cap ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый большой горящий блок СложнаяДальние прыжки по полю СложнаяПрямоугольники из одних единиц СредняяКого видно в строю СредняяВода между стенами Сложная
загружаем Python…
Вход
grid=[[5, 2, 2], [3, 3, 1]], cap=3
Ожидается
12

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