Ctrl K

Цена тает с каждой продажей

Средняя
На складе лежат товары нескольких видов: stock[i] — сколько единиц i-го вида есть сейчас. Оптовик хочет купить ровно sales единиц, причём любых видов. Цена у оптовика необычная: единица товара стоит столько, сколько единиц этого вида осталось на складе **в момент продажи**. Например, если на складе 6 чайников, первый уйдёт за 6, следующий — уже за 5, и так далее. Продавать можно в любом порядке. Найдите наибольшую выручку за sales единиц. Ответ может быть огромным — верните его по модулю 10⁹ + 7.
Пример 1
stock=[4, 2], sales=3 → 9

Продаём первый товар трижды: 4 + 3 + 2 = 9. Продать на последнем шаге второй товар за 2 — та же сумма.

Пример 2
stock=[3, 3, 1], sales=5 → 11

Продаём 3, 3, затем 2, 2, и последний за 1: 3 + 3 + 2 + 2 + 1 = 11.

Пример 3
stock=[1000000000], sales=1000000000 → 21
Ограничения
  • 1 ≤ len(stock) ≤ 10⁵
  • 1 ≤ stock[i] ≤ 10⁹
  • 1 ≤ sales ≤ min(sum(stock), 10⁹)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОдни призы, разные вкусы СредняяСжать квадраты разностей СредняяВыровнять до палиндрома СредняяБригада срывает холм СредняяРастущие группы без повторов Сложная
загружаем Python…
Вход
stock=[4, 2], sales=3
Ожидается
9

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