#CPP2J. 可改期的日程
可改期的日程
题意:
起初没有待办日程,每条日程由一个名称和一个非负整数时刻组成。当前待办日程的名称互不相同。
依次处理以下操作:
BOOK s t:如果当前存在名称为 的待办日程,将它的时刻改为 ;否则新建这条日程。CANCEL s:取消当前名称为 的待办日程。不存在时,不发生变化。NEXT:取出当前时刻最小的待办日程,输出其时刻和名称,并将它从待办日程中删除。时刻相同时,取名称字典序最小的日程。没有待办日程时,输出EMPTY。
已经取消或取出的名称之后可以重新使用。时刻只用来比较日程的先后,不代表程序当前时间,因此新建或改期后的时刻可以小于此前输出过的时刻。
名称仅由小写英文字母组成。字典序比较从左到右找到第一个不同字母,字母靠前者较小;一方是另一方的完整前缀时,较短者较小。
输入格式:
第一行一个整数 (),表示操作次数。
接下来 行,每行给出一条操作。
BOOK 操作给出字符串 和整数 (,)。CANCEL 操作给出字符串 ()。
输出格式:
对每条 NEXT 操作输出一行。存在日程时,输出其时刻和名称,以一个空格分隔;否则输出 EMPTY。
没有 NEXT 操作时不输出内容。
样例:
样例输入:
12
BOOK beta 5
BOOK alpha 5
BOOK gamma 3
BOOK gamma 8
NEXT
CANCEL beta
NEXT
NEXT
BOOK alpha 2
CANCEL ghost
NEXT
NEXT
样例输出:
5 alpha
8 gamma
EMPTY
2 alpha
EMPTY
样例解释:
gamma 改期后,原来的时刻 不再有效。时刻同为 时,alpha 先被取出。最后重新创建的 alpha 是一条新的待办日程,其时刻可以为 。
相关
在下列比赛中: