Олимпиадный тренинг

Задача . 18. Мини-служба поддержки — повышенный уровень


Задача

Темы:

Служба поддержки обрабатывает заявки в порядке создания. Изначально заявок нет. Каждая заявка имеет уникальный идентификатор и состояние WAITING, CANCELLED или DONE. Идентификатор нельзя использовать повторно даже после отмены или обработки заявки. Команда NEXT обрабатывает самую раннюю из всё ещё ожидающих заявок, пропуская отменённые.

Команды

КомандаДействие и ответ
NEW idСоздать заявку со статусом WAITING: OK. Если id когда-либо использовался: EXISTS.
CANCEL idОтменить ожидающую заявку: OK. Для отсутствующей, отменённой или обработанной: REJECTED.
NEXTОбработать первую ожидающую заявку, присвоить ей DONE и вывести id. Если ожидающих нет: EMPTY.
STATUS idВывести WAITING, CANCELLED, DONE или MISSING, если заявка не создавалась.

Входные данные

Первая строка содержит q. Далее идут q команд, по одной в строке.

Выходные данные

Для каждой команды выведите ответ из таблицы. Неуспешные NEW и CANCEL, запрос STATUS и NEXT без ожидающих заявок не меняют состояния заявок.

Не выводите приглашения к вводу и пояснения. Служебные слова в ответах пишите в указанном регистре.

Ограничения

1 ≤ q ≤ 100000; идентификатор id от 1 до 10⁹.


Примеры
№Входные данныеВыходные данные
1
11
NEW 10
NEW 20
CANCEL 10
NEXT
STATUS 10
STATUS 20
NEW 10
CANCEL 20
NEXT
STATUS 30
CANCEL 30
OK
OK
OK
20
CANCELLED
DONE
EXISTS
REJECTED
EMPTY
MISSING
REJECTED
2
8
NEW 7
NEW 7
STATUS 7
NEXT
NEW 7
CANCEL 7
STATUS 7
NEXT
OK
EXISTS
WAITING
7
EXISTS
REJECTED
DONE
EMPTY
Статистика успешных решений по компиляторам
Комментарий учителя