[HAOI2008]排名系统
排名系统需要处理三种请求:上传一条新的得分记录、查询某位玩家的当前排名,以及返回某个排名区间内的记录。当玩家上传最新的得分记录时,其原有记录会被删除。为了减轻服务器负担,返回某个排名区间内的记录时,最多返回 条。
所有玩家的当前有效得分记录按照分数从高到低排列,名次从 开始。分数相同时,当前有效记录上传时间较早的玩家排名更靠前。当玩家上传新的得分记录时,旧记录会被删除,新记录的上传时间以本次请求的时间为准。
输入格式
第一行输入一个整数 ,表示请求总数。
接下来 行,每行包含一个请求。请求格式如下:
+Name Score:上传最新的得分记录。Name表示玩家姓名,仅由大写英文字母组成,长度不超过 个字符;Score表示得分,是一个最多包含 位数字的正整数。?Name:查询玩家的当前排名。保证该玩家的得分记录此前已经上传。?Index:输出从第Index名开始的至多 位玩家的姓名。保证Index合法,即不小于 ,且不大于当前拥有有效记录的玩家总数。
输出格式
对于每个 ?Name 请求,输出一个整数,表示该玩家的当前排名。
对于每个 ?Index 请求,在一行中依次输出从第 Index 名开始的至多 位玩家的姓名,姓名之间以一个空格分隔。
样例输入
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
数据范围
- ;
- 玩家姓名仅由大写英文字母组成,长度不超过 个字符;
- 得分为最多包含 位数字的正整数。
来源与许可
本题为 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