Сервис новостей хранит пары «id → рейтинг». На вход — список операций ops:
["add", id, score] — новая новость (такого id ещё не было); ["update", id, score] — новый рейтинг существующей новости, для неизвестного id ничего не делать; ["top", k] — id k новостей с наибольшим рейтингом.
Верните список ответов на все top по порядку. Внутри ответа — по убыванию рейтинга, при равном рейтинге меньший id раньше. Новостей меньше k — верните все.
В работе: Блок «Главное» в ленте: рейтинг пересчитывают на каждый лайк, а показывают первые 5–10.
Пример 1
ops = [["add", 1, 50], ["add", 2, 80], ["add", 3, 60], ["top", 2], ["update", 1, 90], ["top", 2]]
[[2, 3], [1, 2]]
После обновления новость 1 выходит на первое место.
Пример 2
ops = [["top", 3], ["add", 7, 10], ["update", 9, 100], ["top", 3]]
[[], [7]]
Пустой сервис и обновление несуществующего id.
Ограничения
- 1 ≤ длина
ops≤ 2·10⁵ - 1 ≤ k ≤ 10
- 0 ≤
id≤ 10⁹, |score| ≤ 10⁹ - Лимит — 2 с на тест (2000 мс).
print() и console.log() уходят в консоль.
def news_top(ops):
Источник: VK, отчёт кандидата на Хабре, 2026. Условие пересказано своими словами.
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.