#12076. 得分排行榜(按分数降序)

得分排行榜(按分数降序)

📚 题目名称:【综合】得分排行榜(按分数降序)


🧭 题目描述

某在线评测系统记录用户的最高得分,每次提交可能更新该用户的记录。请你编写程序实现以下功能:

  • 读取每次提交的用户名和得分;
  • 对于同一用户,仅保留其​最高得分​;
  • 最终输出​排行榜​,排序规则如下:
    1. 得分高的用户排在前面;
    2. 若得分相同,用户名字典序小的排在前面。

📥 输入格式

  • 第 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>> 存储排序对象;
  • 排序时使用自定义比较函数:
    • 若分数不同,则按分数降序;
    • 若分数相同,则按用户名升序(字典序小的排前)。