#CPP2B. 分次打印

分次打印

题意:

打印机最初没有等待打印的文件。依次处理以下操作:

  • ADD id p:收到编号为 idid、共有 pp 页的文件,将它放到所有等待文件的最后面。
  • PRINT:如果没有等待文件,输出 EMPTY。否则取出最前面的文件,打印它的一页,输出该文件编号和打印后的剩余页数。如果还有未打印的页,将这个文件放到所有等待文件的最后面;否则它离开打印机。

一条 PRINT 操作至多打印一页。文件回到最后面后,必须等排在它前面的文件分别获得打印机会,才能再次被处理。

输入格式:

第一行一个整数 qq(1≤q≤2×1051 \le q \le 2\times10^5),表示操作次数。

接下来 qq 行,每行给出一条操作。

ADD 操作给出整数 idid、pp(1≤id,p≤1091 \le id,p \le 10^9)。保证所有 ADD 操作中的文件编号互不相同,包括已经打印完成的文件。

输出格式:

对每条 PRINT 操作输出一行。成功打印时,输出文件编号和剩余页数,以一个空格分隔;没有等待文件时,输出 EMPTY。

没有 PRINT 操作时不输出内容。

样例:

样例输入:

9
ADD 7 2
ADD 8 1
PRINT
ADD 9 2
PRINT
PRINT
PRINT
PRINT
PRINT

样例输出:

7 1
8 0
7 0
9 1
9 0
EMPTY

样例解释:

第一次打印后,文件 77 还有一页,它排到文件 88 后面。之后加入的文件 99 排在文件 77 后面。