返回首页 返回题库

成绩排序

C++ 中等 GESP五级真题 #排序#数组

题目描述

题面描述

有名同学,每名同学有语文、数学、英语三科成绩。你需要按如下规则对所有同学的成绩从高到低排序:

  1. 比较总分,高者靠前;
  2. 如果总分相同,则比较语文和数学两科总分,高者靠前;
  3. 如果仍相同,则比较语文和数学两科的最高分,高者靠前;
  4. 如果仍相同,则二人并列。

你需要输出每位同学的排名,如遇人并列,则他们排名相同,并留空后面的个名次。例如,有3名同学并列第1,则后一名同学自动成为第4名。

输入格式

第一行一个整数,表示同学的人数。

接下来行,每行三个非负整数分别表示该名同学的语文、数学、英语成绩。

保证。

输出格式

输出行,按输入同学的顺序,输出他们的排名。

注意:请不要按排名输出同学的序号,而是按同学的顺序输出他们各自的排名。

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。

样例1

输入:

6
140 140 150
140 149 140
148 141 140
141 148 140
145 145 139
0 0 0

输出:

1
3
4
4
2
6

数据范围

对于30%的测试点,保证,且所有同学的总分各不相同。

对于所有测试点,保证。

💡 查看提示(先自己想一想再看)
考察知识点:自定义排序规则、结构体/元组存储多维度信息、排名计算。解题思路:首先将每个学生的各项排序关键字与原始索引一起存储,按照题目给定的优先级从高到低排序,排序后遍历计算每个学生的排名,遇到关键字相同的学生使用相同排名,最后按原始输入顺序输出排名。易错点:需要保留原始输入的索引,避免排序后无法对应原顺序输出;排名计算时要注意并列情况的处理,不要使用连续排名。
⚙ 开始做这道题 0 人做过 · 0 收藏 · 5 浏览

讨论(0)