P4291 [HAOI2008] 排名系统

题目描述

排名系统通常要应付三种请求:上传一条新的得分记录、查询某个玩家的当前排名以及返回某个区段内的排名记录。当某个玩家上传自己最新的得分记录时,他原有的得分记录会被删除。为了减轻服务器负担,在返回某个区段内的排名记录时,最多返回 $10$ 条记录。

输入格式

第一行是一个整数 $n(10\le n\le250000)$ 表示请求总数目。接下来 $n$行,每行包含了一个请求。请求的具体格式如下: - `+Name Score` 上传最新得分记录。`Name` 表示玩家名字,由大写英文字母组成,不超过 $10$ 个字符。`Score` 为最多 $8$ 位的正整数。 - `?Name` 查询玩家排名。该玩家的得分记录必定已经在前面上传。如果两个玩家的得分相同,则先得到该得分的玩家排在前面。 - `?Index` 返回自第 `Index` 名开始的最多 $10$ 名玩家名字。`Index` 必定合法,即不小于 $1$,也不大于当前有记录的玩家总数。

输出格式

- 对于 `?Name` 格式的请求,应输出一个整数表示该玩家当前的排名; - 对于 `?Index` 格式的请求,应在一行中依次输出从第 `Index` 名开始的最多 $10$ 名玩家姓名,用一个空格分隔。

说明/提示

- 对于 $20\%$ 的数据,$N\le100$; - 对于 $100\%$ 的数据,$N\le2.5\times10^5$。