Ctrl K

Лучшие бонусы младших по рангу

Средняя
В команде n сотрудников. У сотрудника i есть ранг ranks[i] и бонус bonuses[i]. Для каждого сотрудника i посмотрите на всех, чей ранг **строго меньше** ranks[i], и выберите из их бонусов не больше k штук так, чтобы сумма была максимальной. Если младших по рангу нет, сумма равна 0. Верните список длины n, где i-й элемент — эта максимальная сумма для сотрудника i.
Пример 1
ranks=[3, 1, 4, 2], bonuses=[7, 9, 5, 6], k=2 → [15, 0, 16, 9]

У сотрудника 0 (ранг 3) младше него сотрудники 1 и 3 с бонусами 9 и 6 — сумма 15. У сотрудника 1 младших нет — 0. У сотрудника 2 (ранг 4) младшие все остальные, два лучших бонуса — 9 и 7, итого 16. У сотрудника 3 (ранг 2) младший только сотрудник 1 — 9.

Пример 2
ranks=[5, 5, 2], bonuses=[4, 8, 3], k=3 → [3, 3, 0]

Равный ранг не считается младшим: сотрудники 0 и 1 могут взять только бонус сотрудника 2, то есть 3.

Пример 3
ranks=[1, 2, 3, 4], bonuses=[10, 1, 1, 1], k=1 → [0, 10, 10, 10]
Ограничения
  • 1 ≤ n ≤ 10⁵
  • len(ranks) == len(bonuses) == n
  • 1 ≤ ranks[i], bonuses[i] ≤ 10⁶
  • 1 ≤ k ≤ n
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиK-й результат сверху СредняяСтудии для записи СредняяСамые частые значения СредняяK-е по величине в упорядоченной таблице СредняяЗадания с перерывом на остывание Средняя
загружаем Python…
Вход
ranks=[3, 1, 4, 2], bonuses=[7, 9, 5, 6], k=2
Ожидается
[15, 0, 16, 9]

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