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

Задача . 14. Фоновая обработка заданий — повышенный уровень


Задача

Темы:

Фоновый обработчик делит время между заданиями. Изначально задания стоят в очереди в порядке ввода. За один шаг обработчик извлекает первое задание и уменьшает его оставшийся объём работы на 1. Если объём стал нулевым, задание завершено; иначе оно возвращается в конец очереди. Выполните не более k шагов. Если очередь опустела, работа сразу заканчивается.

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

Первая строка содержит n и k. Далее идут n строк id work: уникальный идентификатор задания и его начальный объём работы.

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

В первой строке выведите идентификаторы завершённых заданий в порядке завершения через пробел или EMPTY. Во второй строке выведите r — число оставшихся заданий. Далее выведите r строк id remaining в порядке текущей очереди, начиная с первого. При r = 0 дополнительных строк нет.

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

Ограничения

0 ≤ n ≤ 100000; 0 ≤ k ≤ 200000; 1 ≤ id, work ≤ 10⁹. Идентификаторы во входных данных различны.


Примеры
№Входные данныеВыходные данные
1
3 4
10 2
20 1
30 3
20 10
1
30 2
2
2 10
5 1
8 2
5 8
0
Статистика успешных решений по компиляторам
 Кол-во
C#1
Комментарий учителя