2404. 攀登排行榜
1000ms
256MB
简单
二分算法
题目描述
一个游戏玩家想要爬上排行榜顶端并追踪自己的排名。该游戏使用**密集排名(Dense Ranking)**规则,其特点如下:
- 分数最高的人排名第 $1$。
- 分数相同的人拥有相同的排名。
- 下一个分数较低的人的排名数字紧随其后(例如:$100, 90, 90, 80$ 的排名分别是 $1, 2, 2, 3$)。
现在给定当前排行榜上的分数序列 `ranked` 和玩家依次取得的分数序列 `player`,请计算玩家每轮游戏后的排名。
输入格式
- 第一行包含一个整数 $n$,表示排行榜上的玩家人数。
- 第二行包含 $n$ 个以空格分隔的整数 `ranked[i]`,按**从大到小**的顺序排列。
- 第三行包含一个整数 $m$,表示玩家参加的游戏轮数。
- 第四行包含 $m$ 个以空格分隔的整数 `player[j]`,按**从小到大**的顺序排列。
输出格式
- 输出 $m$ 行,每行一个整数,代表玩家在对应游戏得分后的排名。
样例 1
输入 (Input)
7 100 100 50 40 40 20 10 4 5 25 50 120
输出 (Output)
6 4 2 1
样例 2
输入 (Input)
6 100 90 90 80 75 60 5 50 65 77 90 102
输出 (Output)
6 5 4 2 1
- $1 \le n \le 2 \times 10^5$
- $1 \le m \le 2 \times 10^5$
- $0 \le ranked[i] \le 10^9$
- $0 \le player[j] \le 10^9$
- `ranked` 数组已按降序排列。
- `player` 数组已按升序排列。
› 输入 stdin
CtrlShiftEnter
‹ 输出 stdout
错误 stderr
操作成功