Ctrl K

Кристаллы: потратить или поглотить

Средняя
Маг собирает очки с помощью кристаллов. Сила кристаллов задана массивом crystals, начальный запас энергии мага — charge, очков в начале 0. Можно сколько угодно раз и в любом порядке выполнять два действия: - **Потратить.** Выбрать ещё не поглощённый кристалл i, если charge ≥ crystals[i]: маг получает 1 очко, а charge уменьшается на crystals[i]. Кристалл остаётся на месте, его можно выбирать снова. - **Поглотить.** Если у мага уже есть хотя бы одно очко, выбрать ещё не поглощённый кристалл i: charge увеличивается на crystals[i], а кристалл исчезает навсегда. Верните наибольшее число очков, которое можно набрать.
Пример 1
crystals=[4, 1, 6], charge=1 → 11

Тратим 1 на кристалл с силой 1 (очков 1, заряд 0). Поглощаем кристаллы 4 и 6 — заряд 10. Теперь десять раз тратим по 1 на тот же слабый кристалл: всего 11 очков.

Пример 2
crystals=[5, 3], charge=2 → 0

Заряда не хватает ни на один кристалл, а поглощать можно только после первого очка. Ответ — 0.

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

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