13. Очередь печати

☰ Теория

Очередь Queue<T>

Что хранит. Хранит элементы в порядке поступления. Первым извлекается самый ранний добавленный элемент: FIFO.

Для чего используют. Подходит для очереди печати, заявок и фоновых заданий, которые нужно обслуживать по очереди.

Основные операции

Запись на C#Назначение
q.Enqueue(x)Добавить x в конец.
q.Dequeue()Вернуть и удалить первый элемент.
q.Peek()Вернуть первый элемент без удаления.
q.CountЧисло элементов.
foreach (int x in q)Прочитать элементы от первого к последнему без удаления.

Пример

Для примера нужны using System; и using System.Collections.Generic;. Код выполняется внутри Main.

Queue<int> q = new Queue<int>();
q.Enqueue(10);
q.Enqueue(20);
Console.WriteLine(q.Peek());   // Только смотрим на первый.
Console.WriteLine(q.Dequeue());
Console.WriteLine(q.Count);

Вывод:

10
10
1

Важно. Перед Peek и Dequeue проверьте Count > 0. Повторяющиеся значения — отдельные элементы очереди.

Для этой задачи

  • Просмотр и печать. Peek оставляет документ в очереди, Dequeue удаляет его.

Документы печатаются в порядке добавления в очередь. Изначально очередь пуста. Один идентификатор может добавляться несколько раз: каждое добавление создаёт отдельное задание на печать.

Команды

КомандаДействие и ответ
ADD idПоставить документ в конец очереди: OK.
PEEKВывести первый идентификатор без удаления или EMPTY.
PRINTИзвлечь первый документ и вывести его идентификатор или EMPTY.
COUNTВывести число заданий в очереди.

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

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

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

Для каждой команды выведите ответ из таблицы. PEEK не удаляет документ. PRINT на пустой очереди ничего не меняет.

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

Ограничения

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

Примеры
Входные данныеВыходные данные
1
9
ADD 31
ADD 42
PEEK
COUNT
PRINT
PEEK
PRINT
PRINT
COUNT
OK
OK
31
2
31
42
42
EMPTY
0
2
6
PEEK
ADD 7
ADD 7
PRINT
PRINT
PRINT
EMPTY
OK
OK
7
7
EMPTY

Напишите программу
Auto
       

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам