Ctrl K

Наращиваем капитал проектами

Сложная
У студии есть стартовый капитал funds и список из n проектов. Проект i можно начать, только если текущий капитал не меньше entry[i]; после завершения он приносит чистую прибыль gains[i], и она добавляется к капиталу. Сам порог entry[i] не тратится. До конца сезона студия успеет выполнить не больше slots различных проектов, по одному за раз. Каждый проект можно взять не более одного раза. Выберите проекты и их порядок так, чтобы итоговый капитал был наибольшим, и верните этот капитал.
Пример 1
slots=2, funds=1, gains=[5, 2, 9], entry=[3, 1, 6] → 8

С капиталом 1 доступен только проект 1: капитал станет 3. Теперь доступен проект 0 (+5), итого 8. Проект 2 с прибылью 9 так и не стал доступен за два слота.

Пример 2
slots=3, funds=0, gains=[4, 1, 2], entry=[5, 0, 1] → 3

0 → проект 1 → 1 → проект 2 → 3. Проект 0 требует 5, денег не хватает, поэтому третий слот пропадает. Ответ 3.

Ограничения
  • 1 ≤ n ≤ 10⁵, len(entry) = len(gains) = n
  • 1 ≤ slots ≤ 10⁵
  • 0 ≤ funds ≤ 10⁹
  • 0 ≤ gains[i] ≤ 10⁴
  • 0 ≤ entry[i] ≤ 10⁹
  • Ответ меньше 2³¹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБольше заказов к сроку СложнаяСамый узкий отрезок для всех списков СложнаяБригада с оплатой по навыку СложнаяТемп отряда задаёт самый слабый СложнаяРазброс оценок при делении посылок Сложная
загружаем Python…
Вход
slots=2, funds=1, gains=[5, 2, 9], entry=[3, 1, 6]
Ожидается
8

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