T241034 B 小明爱缓存
题目描述
小明现在遇到一个缓存的题目,题目的意思如下:
有很多用户访问网站的资源,每个资源有一个数字编号 $x$,如果资源有缓存的话,访问速度将会快很多,否则要从其他服务器获取关于 $x$ 的信息。
由于内存有限,不可能缓存所有的资源,所以缓存需要配置大小,一旦缓存中的数据超过这个大小,则要淘汰释放一些旧的资源。
现在有一个初始大小为 $2000$ 的缓存,这个缓存的大小是可以被改变的,采用 lru 的方式淘汰缓存里面的数据,lru 算法具体如下:
每次处理最新访问的数字 $x$,会有 $2$ 种情况:
1、如果 $x$ 在缓存中,则直接更新 $x$ 的最后访问时间为当前时间。
2、如果 $x$ 不在缓存中,则把 $x$ 加入缓存,并更新 $x$ 的最后访问时间为当前时间。
3、当缓存满的时候,淘汰最久没有被访问的数字。
小明不会做这个题目,聪明的你可以帮助小明解决这个问题吗?
输入格式
第一行输入一个 $n(1 \le n \le 200000)$
接下来 $n$ 行,每行一个字符一个数字 $ch$ $x$:
如果 $ch = 'q'$,表示访问数字 $x$
如果 $ch = 'c'$,表示改变当前缓存大小为 $x$
输出格式
按数字的最后访问时间,顺序输出当前缓存中的数字,访问更早的先输出。
说明/提示
### 样例解释
最初缓存的大小为2000,执行 q 1,缓存中加入1,执行q 2,缓存中加入 2,执行c 1,缓存大小改变为1,因为数字1最后访问的时间要早于数字2最后访问的时间,所以数字1被清除。最终缓存中只剩下数字2。