Ctrl K

Самая длинная серия станков в бюджет

Сложная
В цеху в ряд стоят n станков. Запуск станка i требует разового расхода startup[i], а его работа — upkeep[i]. Если запустить сразу k станков, общий расход считается так: наибольший startup среди них плюс k, умноженное на сумму их upkeep. Нужно запустить несколько **подряд стоящих** станков так, чтобы общий расход не превысил budget. Верните наибольшее возможное число таких станков (0, если не подходит ни один).
Пример 1
startup=[5, 2, 8, 3], upkeep=[1, 2, 1, 1], budget=20 → 3

Станки 1–3: max(2, 8, 3) + 3 · (2 + 1 + 1) = 8 + 12 = 20 — ровно в бюджет. Все четыре стоят 8 + 4 · 5 = 28.

Пример 2
startup=[9, 10], upkeep=[3, 3], budget=11 → 0

Даже один станок стоит 9 + 1 · 3 = 12 или 10 + 3 = 13 — больше бюджета, ответ 0.

Пример 3
startup=[4, 4, 4], upkeep=[1, 1, 1], budget=13 → 3
Ограничения
  • 1 ≤ n ≤ 5 · 10⁴
  • len(startup) == len(upkeep) == n
  • 1 ≤ startup[i], upkeep[i] ≤ 10⁵
  • 1 ≤ budget ≤ 10¹⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКороткий отрезок с нужной суммой СложнаяМаксимум в скользящем окне СложнаяТёмный промежуток между фонарями СложнаяНаибольшая сумма с короткими прыжками СложнаяЛучшая пара близких маяков Сложная
загружаем Python…
Вход
startup=[5, 2, 8, 3], upkeep=[1, 2, 1, 1], budget=20
Ожидается
3

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