P17745 「RSOI-1B」比赛 / contest
题目背景
题目来源:【HT-121-Div.3】核桃 CSP-J 组模拟赛
题目描述
小 R 成为了 PSC 2027 的主办方,他需要查看 $n$ 名选手的成绩。比赛共 $k$ 题,每题满分均为 $100$。
他获得了 $m$ 条提交记录,分别包括选手姓名、题目编号、该题得分。其中,选手姓名为字符串,其余均为整数。
现在,他想知道如果比赛是 OI 赛制或 IOI 赛制,选手的排名如何。
- OI 赛制:选手的每题得分以其最后一次提交该题为准。
- IOI 赛制:选手的每题得分以其最高分的一次提交为准。
选手未提交的题目得分为 $0$,**保证每个选手至少有一次提交。**
---
输出选手排名时,优先对选手的总分进行排序。
**若总分相等,则排名相同,但输出时请根据选手的姓名按字典序排列。字典序较小的先输出。**
> 排名时,相同分数占同一个名次,后面的名次跳过被占用的人数。
>
>例如,若按总分从高到低为 $100,70,70,20$。则排名是:$1,2,2,4$,而不是 $1, 2, 2,3$。
具体请参考样例。
输入格式
输入共 $m+2$ 行。
第一行,三个正整数 $n,m,k$。表示选手数量、总提交次数和题目数量。
接下来 $m$ 行,每行一个字符串和两个整数,分别表示选手姓名、题目编号、该题得分。
接下来一行,一个字符串:
- 若该字符串为 `OI`,则小 R 想知道如果比赛是 OI 赛制,选手的排名。
- 若该字符串为 `IOI`,则小 R 想知道如果比赛是 IOI 赛制,选手的排名。
输出格式
输出共 $n$ 行,表示选手的排名。
第 $i$ 行,先输出该选手的排名,再输出选手的姓名,最后输出选手的总得分。
说明/提示
**【样例解释 #1】**
- $\text{cyx}$ 的分数:$100+95+90=285$,故排在第一。
- $\text{cht}$ 的分数:$100+100+0=200$,故排在第二。注意,由于是 OI 赛制,$\text{cht}$ 在第三题的最后一次提交分数为 $0$,取该提交计入总分。
- $\text{xlq}$ 的分数:$80+0+90=170$,故排在第三。
**【样例解释 #2】**
- $\text{crx}$ 的分数:$100+100+100=300$,故排在第一。
- $\text{lw}$ 的分数:$100+100+100=300$,故排在第一。注意,由于是 IOI 赛制,取 $\text{lw}$ 第二题最高分的提交($100$ 分)计入他的总得分。且由于 $\text{lw}$ 的字典序大于 $\text{crx}$ 的字典序,故先输出 $\text{crx}$。
- $\text{hy}$ 的分数:$10+0+100=110$,故排在第三。
- $\text{lyt}$ 的分数:$50+0+0=50$,故排在第四。
- $\text{zyq}$ 的分数:$0+20+30=50$,故排在第四。
**【数据范围】**
对于所有的数据,保证:
- $1 \le n,m,k \le 10^5$。
- 选手姓名均为小写字母且长度 $\le 10$。
- 题目编号在 $1 \sim k$ 之间,每题得分在 $0 \sim 100$ 之间。
::cute-table{tuack}
| 子任务编号 | $n,m,k \le$ | 特殊性质 | 分值 |
| :--: | :--: | :--: | :--: |
| 1 | $10^4$ | 保证不出现总分相等的情况 | 40 |
| 2 | $10^3$ | 无 | 20 |
| 3 | $10^5$ | 无 | 40 |