Ctrl K

Заказы с краёв полки

Сложная
На полке в ряд стоят коробки, в коробке i лежит boxes[i] единиц товара. Заказы приходят строго по очереди: заказу j нужна коробка, в которой не меньше orders[j] единиц. До прихода первого заказа можно один раз убрать с полки любые коробки (в том числе ни одной) — оставшиеся сохраняют порядок. После этого убирать коробки просто так нельзя. Дальше заказы обрабатываются по порядку. Для очередного заказа берут **крайнюю левую или крайнюю правую** коробку на полке, если в ней достаточно товара, и отдают её. Если ни одна крайняя коробка не подходит (или полка пуста), обработка останавливается. Верните наибольшее число заказов, которые можно обработать.
Пример 1
boxes=[4, 9, 2, 6], orders=[5, 6, 8] → 2

Заранее выбрасываем коробку 2, остаётся [4, 9, 6]. Заказ 5 закрываем коробкой 6 справа, заказ 6 — коробкой 9 (теперь она крайняя справа). Для заказа 8 осталась только 4 — не хватает. Итого 2.

Пример 2
boxes=[3, 1, 5], orders=[1, 3, 5] → 2

Все три не закрыть: на заказ 5 годится только коробка 5, тогда на заказ 3 — только 3, а первый заказ остаётся закрывать коробкой 1, до которой не добраться — она в середине. Два заказа закрыть можно: 3 слева, затем 5 справа.

Пример 3
boxes=[7, 7], orders=[2, 7, 1] → 2

Две коробки закрывают первые два заказа, на третий коробок не осталось.

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

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