Ctrl K

Остаток на полке после заказов

Средняя
На полке в ряд стоят товары, prices[i] — цена товара с индексом i. Поступают заказы orders, каждый заказ — пара [index, k], и обрабатываются они строго по порядку: 1. Если товар с индексом index ещё на полке, его забирают. 2. Затем забирают k самых дешёвых из оставшихся товаров. При равной цене первым уходит товар с меньшим индексом. Если на полке меньше k товаров, забирают все. Верните список: после каждого заказа — суммарная цена товаров, которые ещё остались на полке.
Пример 1
prices=[4, 1, 3, 1, 5], orders=[[2, 1], [4, 2]] → [10, 0]

Первый заказ забирает товар с индексом 2 (цена 3) и ещё один самый дешёвый — единицу с индексом 1. Остаются 4 + 1 + 5 = 10. Второй заказ забирает товар 4 (цена 5) и два самых дешёвых из оставшихся: 1 и 4. Полка пуста, сумма 0.

Пример 2
prices=[2, 7, 2, 9], orders=[[3, 0], [3, 1]] → [11, 9]

Первый заказ берёт только товар 3, остаётся 2 + 7 + 2 = 11. Во втором товар 3 уже забран, а из двух двоек берётся та, у которой индекс меньше (индекс 0); остаётся 7 + 2 = 9.

Пример 3
prices=[6], orders=[[0, 0]] → [0]
Ограничения
  • 1 ≤ len(orders) ≤ len(prices) ≤ 10⁵
  • 1 ≤ prices[i] ≤ 10⁵
  • orders[i] = [index, k], 0 ≤ index, k ≤ len(prices) − 1
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВычёркивание с самого маленького СредняяРазобрать стопки поровну ЛёгкаяСамая загруженная переговорка СложнаяСамые частые значения СредняяЗадания с перерывом на остывание Средняя
загружаем Python…
Вход
prices=[4, 1, 3, 1, 5], orders=[[2, 1], [4, 2]]
Ожидается
[10, 0]

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