Ctrl K

Самый доходный участок под лимитом

Сложная
Поле разбито на клетки, field[i][j] — прибыль с клетки (она может быть отрицательной, если клетка требует затрат). Нужно выбрать один участок — прямоугольник из клеток со сторонами вдоль сетки — так, чтобы суммарная прибыль не превышала cap. Верните наибольшую суммарную прибыль такого участка. Гарантируется, что хотя бы один подходящий участок есть. Дополнительно: как изменится решение, если строк намного больше, чем столбцов?
Пример 1
field=[[3, -1], [2, 4]], cap=5 → 5

Левый столбец даёт 3 + 2 = 5 — ровно лимит. Прямоугольники с большей суммой (например, нижняя строка с суммой 6) не подходят.

Пример 2
field=[[-2, 7, 1]], cap=0 → -2

Единственный прямоугольник с суммой не больше 0 — клетка -2.

Ограничения
  • m == len(field), n == len(field[i])
  • 1 ≤ m, n ≤ 150
  • -100 ≤ field[i][j] ≤ 100
  • -10⁵ ≤ cap ≤ 10⁵
  • Существует участок с суммой не больше cap
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСколько цветёт в день визита СложнаяПодъём по строкам и столбцам СложнаяСамый большой лёгкий квадрат СредняяРамка вокруг кляксы СложнаяМеньшие справа Сложная
загружаем Python…
Вход
field=[[3, -1], [2, 4]], cap=5
Ожидается
5

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