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