CF916D Jamie and To-do List

题目描述

“为什么我要完成这么多作业?” Jamie 正忙于他的学校生活。 他开始忘记他必须做的作业。他决定把这些事情写在 To-Do List 上。 他为他的每项任务分配一个价值优先级(较低的价值意味着更重要),这样他就可以决定他需要花更多的时间在哪个任务上。 几天后,Jamie 发现名单太大了,他甚至不能自己管理名单!由于您是 Jamie 的好朋友,请帮助他编写一个程序来支持待办事项列表中的以下操作: `set ai xi`:设置任务 $a_i$ 的优先级为 $x_i$,如果该列表中没有出现则加入该任务。 `remove a_i`:删除该任务。 `query a_i`:求优先级比 $a_i$ 小的任务个数,如果该任务已被删除则输出 $-1$。 `undo sum`:删除此次操作之前的 $sum$ 次操作。 在 Day 0,To-Do List 为空,在接下来 $Q$ 个日子内,Jamie 都会在四个操作中任选一个执行。 对于每个询问操作,输出对应的答案。

输入格式

第一行是一个整数 $Q$。 接下来的 $Q$ 行为任一个操作,第 $i$ 为第 $i$ 天的操作。 **保证最后一行是询问操作。**

输出格式

对于所有的查询操作,输出对应的答案。

说明/提示

保证输入的字符串由小写字符构成,设其长度为 $len$,则 $1\leq len\leq15$。 $1\le Q\le10^5$,并且保证对于所有的 undo 操作,$sum$ 不超过该天之前的天数。