Контест Senior Коллекции и LINQ обновлено

LRU-кеш

Условие

Реализуйте LRU-кеш ёмкостью cap. GET k возвращает значение и делает ключ самым свежим (или -1, если ключа нет). PUT k v добавляет или обновляет значение и делает ключ самым свежим; если ключ новый и кеш полон, сначала вытесняется давно не использованный.

Ввод: cap q (1 ≤ cap ≤ 10⁴, q ≤ 2·10⁴), затем q команд. Ключи из латиницы и цифр, значения целые.

Вывод: результат каждого GET на отдельной строке. Все операции должны работать за O(1).

Пример

2 7
PUT a 1
PUT b 2
GET a
PUT c 3
GET b
GET c
GET a
1
-1
3
1

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.