Ctrl K

Срезать кучи песка

Средняя
На стройке лежат кучи песка: heaps[i] — вес i-й кучи в тоннах. Самосвал сделает ровно moves рейсов. За один рейс он подъезжает к любой куче весом x и увозит из неё ⌊x / 2⌋ тонн (половину, округлённую вниз). К одной и той же куче можно подъезжать сколько угодно раз. Верните наименьший возможный суммарный вес песка, который останется на площадке после всех рейсов.
Пример 1
heaps=[7, 12, 3], moves=2 → 13

Сначала режем кучу 12: уходит 6, остаётся 6. Затем кучу 7: уходит 3, остаётся 4. Кучи [4, 6, 3], всего 13.

Пример 2
heaps=[20], moves=3 → 3

Одну кучу можно резать несколько раз: 20 → 10 → 5 → 3.

Пример 3
heaps=[1, 1], moves=4 → 2

Из кучи в 1 тонну срезать нечего (половина вниз — 0), сумма остаётся 2.

Ограничения
  • 1 ≤ len(heaps) ≤ 10⁵
  • 1 ≤ heaps[i] ≤ 10⁴
  • 1 ≤ moves ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтудии для записи СредняяЗадания с перерывом на остывание СредняяСерии подряд идущих чисел СредняяМетки вразнобой СредняяСращивание верёвок Средняя
загружаем Python…
Вход
heaps=[7, 12, 3], moves=2
Ожидается
13

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