[GESP202403 五级] 成绩排序

GESP编程共123题,本题是整站第1402题,已经有人完成了本题,加油!

题目描述

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

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

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

输入格式

第一行一个整数 N,表示同学的人数。
接下来 N 行,每行三个非负整数 ci​,mi​,ei​ 分别表示该名同学的语文、数学、英语成绩。

输出格式

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

输入输出样例

输入 #1

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

输出 #1

1
3
4
4
2
6

说明/提示

别灰心,再试一次!

真题解析

【题目大意】给定N个同学的语数英成绩,按照题目的要求对学生求解排名。

【考纲知识点】排序算法

【解题思路】该题目做法多样,可用结构体/pair数组/tuple等

总体流程:输入人数和对应的成绩,注意此时需要将人员的编号也存储下来,接下来按照比较优先级对人员进行排名:

优先级从高到低依次为:总分、语文数学总分、语文或数学最高分大的优先。

可以考虑用tuple,将对应的优先级数值存储后,做一次sort降序即可。

【参考程序】

本站题目仅供学习,GESP版权归CCF所有,如有侵权请联系删除。站长陈老师QQ及微信:208234。