Ctrl K

Ящики в склад с двумя дверями

Средняя
Склад — это коридор из комнат шириной в один ящик, с дверями на обоих концах. Высота i-й комнаты (слева направо, с нуля) — rooms[i]. Есть ящики единичной ширины с высотами boxes. Правила: - ящики нельзя ставить друг на друга, в комнате — не больше одного ящика; - порядок, в котором заносить ящики, выбираете вы; - каждый ящик можно заталкивать с любого конца; он не может пройти через комнату ниже себя, и тогда он и все ящики за ним останавливаются перед этой комнатой. Верните, сколько ящиков можно разместить на складе.
Пример 1
boxes=[2, 5, 3, 1], rooms=[6, 1, 4, 2] → 3

Ящик 5 ставим слева в комнату 0. Справа: ящик 2 — в комнату 3, ящик 3 — в комнату 2. Ящик 1 уже никуда не пройти: комната 1 доступна лишь через занятые комнаты. Итого три.

Пример 2
boxes=[3, 3, 3], rooms=[2, 7, 2] → 0

С обеих сторон вход высотой 2 — ящик высоты 3 не пройдёт ни с одной стороны.

Пример 3
boxes=[1, 1, 1], rooms=[3, 1, 3] → 3

Единичные ящики проходят везде, все три комнаты заняты.

Ограничения
  • 1 ≤ len(boxes), len(rooms) ≤ 10⁵
  • 1 ≤ boxes[i], rooms[i] ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамое большое число из кусков СредняяСтудии для записи СредняяНизко — высоко — низко СредняяСтрого низко — высоко СредняяОтменить как можно меньше встреч Средняя
загружаем Python…
Вход
boxes=[2, 5, 3, 1], rooms=[6, 1, 4, 2]
Ожидается
3

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