Ctrl K

Бюджет на деления и вычитания

Средняя
Дан массив неотрицательных чисел values и три числа: cut, halves и cuts. С элементами можно делать два действия: - **Деление**: заменить элемент на половину с округлением вверх (7 → 4, 8 → 4). Всего не больше halves делений. - **Вычитание**: уменьшить элемент на cut, если он сейчас не меньше cut. Всего не больше cuts вычитаний. К каждому элементу каждое действие применяется не больше одного раза, но оба действия к одному элементу — можно, в любом порядке. Верните наименьшую возможную сумму массива.
Пример 1
values=[6, 1, 10], cut=4, halves=1, cuts=1 → 8

Например, делим 10 пополам до 5 и вычитаем 4 из 6: получается [2, 1, 5], сумма 8.

Пример 2
values=[7], cut=3, halves=1, cuts=1 → 1

Порядок важен: сначала пополам (7 → 4), потом вычесть 3 (4 → 1). В обратном порядке вышло бы 7 → 4 → 2.

Пример 3
values=[2, 9], cut=10, halves=0, cuts=2 → 11

Оба числа меньше 10, вычитать нельзя, а делений нет. Сумма остаётся 11.

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

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