Ctrl K

Лестницы и кирпичи на крышах

Средняя
Вы бежите по крышам домов, стоящих в ряд. Высоты крыш — массив roofs, старт — на крыше с индексом 0, за один шаг можно перейти только на следующую крышу. - Если следующая крыша не выше текущей, переход бесплатный. - Если выше на d, нужно либо поставить одну лестницу, либо уложить d кирпичей. У вас bricks кирпичей и ladders лестниц, каждую можно использовать один раз. Распределите их наилучшим образом и верните индекс самой дальней крыши, до которой удастся добраться.
Пример 1
roofs=[3, 8, 6, 10, 11, 4, 9], bricks=4, ladders=1 → 3

С 0 на 1 подъём 5 — ставим лестницу. С 1 на 2 спуск. С 2 на 3 подъём 4 — тратим все 4 кирпича. С 3 на 4 подъём 1, а запасов уже нет: дальше крыши 3 не пройти. Если отдать лестницу подъёму 4, то на подъём 5 кирпичей не хватит ещё раньше.

Пример 2
roofs=[9, 7, 7, 2], bricks=0, ladders=0 → 3

Подъёмов нет вовсе — доходим до последней крыши с индексом 3.

Пример 3
roofs=[1, 4, 2, 7, 5, 6], bricks=3, ladders=1 → 4

Подъёмы: 3, 5 и 1. Лестницу выгоднее всего отдать подъёму 5, а 3 кирпича уходят на подъём 3. На последний подъём 1 ничего не остаётся, поэтому дальше крыши 4 не пройти.

Ограничения
  • 1 ≤ len(roofs) ≤ 10⁵
  • 1 ≤ roofs[i] ≤ 10⁶
  • 0 ≤ bricks ≤ 10⁹
  • 0 ≤ ladders ≤ len(roofs)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтудии для записи СредняяЗадания с перерывом на остывание СредняяСерии подряд идущих чисел СредняяМетки вразнобой СредняяСращивание верёвок Средняя
загружаем Python…
Вход
roofs=[3, 8, 6, 10, 11, 4, 9], bricks=4, ladders=1
Ожидается
3

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