Ctrl K

Подтянуть уровни поодиночке и парами

Сложная
В команде у каждого персонажа есть уровень: levels[i]. Уровни можно только повышать, и для этого есть два действия, которые можно повторять сколько угодно раз: - поднять уровень одного персонажа на 1 — стоит single_price; - поднять на 1 уровни двух **разных** персонажей одновременно — стоит pair_price. Нужно, чтобы у всех персонажей стал одинаковый уровень (любой, не обязательно текущий максимум). Верните минимальную стоимость. Ответ может быть очень большим, поэтому верните его по модулю 10⁹ + 7.
Пример 1
levels=[2, 6], single_price=3, pair_price=1 → 12

Персонажей всего двое, и парное повышение не сокращает разрыв между ними. Остаются четыре одиночных повышения по 3 — итого 12.

Пример 2
levels=[1, 1, 1], single_price=5, pair_price=2 → 0

Все уже на одном уровне, тратить ничего не нужно.

Пример 3
levels=[1, 3, 3, 4], single_price=4, pair_price=3 → 10
Ограничения
  • 1 ≤ len(levels) ≤ 10⁵
  • 1 ≤ levels[i] ≤ 10⁶
  • 1 ≤ single_price ≤ 10⁶
  • 1 ≤ pair_price ≤ 10⁶
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКрасота клумб на бюджете СложнаяВыровнять банки СредняяСамая сильная команда СредняяСдвиг отрезка ради совпадений СредняяПеренести одну встречу ради перерыва Средняя
загружаем Python…
Вход
levels=[2, 6], single_price=3, pair_price=1
Ожидается
12

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