P1184

[HAOI2008]排名系统

[HAOI2008]排名系统

排名系统需要处理三种请求:上传一条新的得分记录、查询某位玩家的当前排名,以及返回某个排名区间内的记录。当玩家上传最新的得分记录时,其原有记录会被删除。为了减轻服务器负担,返回某个排名区间内的记录时,最多返回 1010 条。

所有玩家的当前有效得分记录按照分数从高到低排列,名次从 11 开始。分数相同时,当前有效记录上传时间较早的玩家排名更靠前。当玩家上传新的得分记录时,旧记录会被删除,新记录的上传时间以本次请求的时间为准。

输入格式

第一行输入一个整数 nn,表示请求总数。

接下来 nn 行,每行包含一个请求。请求格式如下:

  • +Name Score:上传最新的得分记录。Name 表示玩家姓名,仅由大写英文字母组成,长度不超过 1010 个字符;Score 表示得分,是一个最多包含 88 位数字的正整数。
  • ?Name:查询玩家的当前排名。保证该玩家的得分记录此前已经上传。
  • ?Index:输出从第 Index 名开始的至多 1010 位玩家的姓名。保证 Index 合法,即不小于 11,且不大于当前拥有有效记录的玩家总数。

输出格式

对于每个 ?Name 请求,输出一个整数,表示该玩家的当前排名。

对于每个 ?Index 请求,在一行中依次输出从第 Index 名开始的至多 1010 位玩家的姓名,姓名之间以一个空格分隔。

样例输入

20
+ADAM 1000000
+BOB 1000000
+TOM 2000000
+CATHY 10000000
?TOM
?1
+DAM 100000
+BOB 1200000
+ADAM 900000
+FRANK 12340000
+LEO 9000000
+KAINE 9000000
+GRACE 8000000
+WALT 9000000
+SANDY 8000000
+MICK 9000000
+JACK 7320000
?2
?5
?KAINE

样例输出

2
CATHY TOM ADAM BOB
CATHY LEO KAINE WALT MICK GRACE SANDY JACK TOM BOB
WALT MICK GRACE SANDY JACK TOM BOB ADAM DAM
4

数据范围

  • 10≤n≤2.5×10510\le n\le 2.5\times 10^5;
  • 玩家姓名仅由大写英文字母组成,长度不超过 1010 个字符;
  • 得分为最多包含 88 位数字的正整数。

来源与许可

本题为 HAOI 2008 试题「排名系统」,题面与测试数据整理自 BZOJ。

样例 1

输入

20
+ADAM 1000000
+BOB 1000000
+TOM 2000000
+CATHY 10000000
?TOM
?1
+DAM 100000
+BOB 1200000
+ADAM 900000
+FRANK 12340000
+LEO 9000000
+KAINE 9000000
+GRACE 8000000
+WALT 9000000
+SANDY 8000000
+MICK 9000000
+JACK 7320000
?2
?5
?KAINE

输出

2
CATHY TOM ADAM BOB
CATHY LEO KAINE WALT MICK GRACE SANDY JACK TOM BOB
WALT MICK GRACE SANDY JACK TOM BOB ADAM DAM
4