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 |