Ctrl K

Квадратное окно в решётке

Средняя
Решётка собрана из прутьев: rows + 2 горизонтальных и cols + 2 вертикальных, они делят её на клетки 1 × 1. Горизонтальные прутья пронумерованы сверху вниз числами от 1 до rows + 2, вертикальные — слева направо от 1 до cols + 2. Некоторые прутья можно вынуть: горизонтальные с номерами из loose_rows и вертикальные с номерами из loose_cols. Остальные закреплены намертво. Выньте любые из съёмных прутьев (можно ни одного) так, чтобы в решётке образовалось сквозное окно в форме квадрата, и верните наибольшую возможную площадь такого окна.
Пример 1
rows=4, cols=3, loose_rows=[2, 3, 4], loose_cols=[3, 4] → 9

Убрав горизонтальные прутья 2–4, получаем просвет высотой 4; убрав вертикальные 3 и 4 — шириной 3. Квадрат ограничен меньшей стороной: 3 × 3 = 9.

Пример 2
rows=5, cols=5, loose_rows=[2, 4, 6], loose_cols=[2, 3] → 4

Среди горизонтальных съёмных прутьев нет двух соседних, поэтому по высоте больше 2 клеток не открыть. Ответ 2 × 2 = 4.

Ограничения
  • 1 ≤ rows, cols ≤ 10⁹
  • 1 ≤ len(loose_rows), len(loose_cols) ≤ 10⁴
  • 2 ≤ loose_rows[i] ≤ rows + 1
  • 2 ≤ loose_cols[i] ≤ cols + 1
  • Номера внутри каждого списка различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиТройки с нулевой суммой СредняяСумма тройки ближе всего к цели СредняяЧетыре числа с заданной суммой СредняяРазличные перестановки с повторами СредняяРазложить анаграммы по группам Средняя
загружаем Python…
Вход
rows=4, cols=3, loose_rows=[2, 3, 4], loose_cols=[3, 4]
Ожидается
9

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