#12076. 得分排行榜(按分数降序)
得分排行榜(按分数降序)
📚 题目名称:【综合】得分排行榜(按分数降序)
🧭 题目描述
某在线评测系统记录用户的最高得分,每次提交可能更新该用户的记录。请你编写程序实现以下功能:
- 读取每次提交的用户名和得分;
- 对于同一用户,仅保留其最高得分;
- 最终输出排行榜,排序规则如下:
- 得分高的用户排在前面;
- 若得分相同,用户名字典序小的排在前面。
📥 输入格式
- 第 1 行:一个整数
n
(1 ≤ n ≤ 1000),表示提交次数; - 第 2 到
n+1
行:每行一个用户提交记录,格式为name score
。
📤 输出格式
输出排行榜,每行一个用户名和最高得分,格式为:
name score
- 按照上述排序规则输出全部用户。
🎯 样例输入
6
alice 90
bob 95
alice 92
cathy 95
dan 85
bob 80
✅ 样例输出
bob 95
cathy 95
alice 92
dan 85
📘 样例说明
- alice 两次提交,保留最高分 92;
- bob 提交两次,保留最高分 95;
- 最终按分数降序排序,bob 和 cathy 同分,bob 的名字字典序更小,排前。
💡 实现建议
- 使用
map<string, int>
记录每个用户的最高得分; - 使用
vector<pair<string, int>>
存储排序对象; - 排序时使用自定义比较函数:
- 若分数不同,则按分数降序;
- 若分数相同,则按用户名升序(字典序小的排前)。