#mxdx002. ICPC 排名

ICPC 排名

mxdx002. ICPC 排名

题目描述

一场 ICPC 赛制的比赛已经结束。现在给出每支队伍的队名、最终过题数和罚时,请按照 ICPC 排名规则输出所有队伍的排名。

请设计一个队伍类,封装队名、过题数和罚时。队伍对象应具备比较能力,使程序可以完成排序。具体类名、成员变量、构造函数以及比较函数或运算符重载方式均由解答自行设计。

排名规则如下:

  1. 过题数多的队伍排在前面。
  2. 过题数相同时,罚时少的队伍排在前面。
  3. 过题数和罚时都相同时,队名字典序小的队伍排在前面。
  4. 排名从 11 开始连续编号。

提交一个完整的 C++20 程序,并自行编写 main 处理标准输入和标准输出。本题不需要根据提交记录计算过题数或罚时。

输入格式

第一行包含一个整数 nn,表示队伍数量。

接下来 nn 行,每行包含一个字符串和两个整数:

name solved penalty

其中 name 是队名,solved 是最终过题数,penalty 是最终罚时。

输出格式

按照排名顺序输出 nn 行,每行包含四个部分:

rank name solved penalty

其中 rank11 开始连续编号。

数据范围

  • 1n2001 \le n \le 200
  • 0solved120 \le solved \le 12
  • 0penalty1060 \le penalty \le 10^6
  • 队名由小写英文字母组成,长度在 112020 之间,且所有队名互不相同
  • 所有数值均适合使用 int 存储

本题不考察算法优化,直接使用排序即可通过。

示例 1

5
alpha 3 120
beta 3 100
gamma 2 80
delta 0 0
epsilon 3 100
1 beta 3 100
2 epsilon 3 100
3 alpha 3 120
4 gamma 2 80
5 delta 0 0

示例 2

1
only 0 0
1 only 0 0

说明

  • solved 越大排名越靠前。
  • solved 相同时,penalty 越小排名越靠前。
  • solvedpenalty 都相同时,按 name 的字典序升序排列。
  • 题目保证队名唯一,因此不会出现无法决定先后顺序的情况。