#2922. 奖学金
奖学金
版权信息
[NOIP2007]奖学金
任务总览
任务名称 | 时间限制 | 内存限制 | 分数 |
---|---|---|---|
[NOIP 2007] 奖学金 | 1000ms | 256MB | 300 |
题目描述
某小学最近得到了赞助,打算拿出一部分资金为成绩优秀的前 5 名学生发奖学金。每个学生有 33 门课程的成绩(包括语文、数学和英语)。任务是:首先按总分从高到低排序;如果总分相同,再按语文成绩从高到低排序;如果总分和语文成绩都相同,则学号较小的学生排在前面。最终输出前 5 名学生的学号和总分。
输入格式
- 第 1 行:一个正整数 n (6 ≤ n ≤ 300),表示参加评选的学生人数。
- 接下来 n 行,每行包含 3 个整数,分别是该学生的语文、数学和英语成绩。学号从 1 到 n,按输入顺序编号。
输出格式
- 输出前 5 名学生的学号和总分。每行输出两个正整数,分别是学号和总分。
样例输入
6
90 67 80
87 66 91
78 89 91
88 99 77
67 89 64
78 89 98
样例输出
6 265
4 264
3 258
2 244
1 237
提示
- 总分等于语文、数学和英语三科成绩之和。
- 排序的规则是:
- 按总分降序排序。
- 如果总分相同,则按语文成绩降序排序。
- 如果总分和语文成绩都相同,则按学号升序排序。
- 数据规模最大为 300 个学生,排序复杂度 O(n log n) 可以接受。
题目分析
- 输入:每个学生有 3 门成绩。输入中包含学生的成绩以及学生数量。
- 排序:
- 对于每个学生,计算总分,并按总分、语文成绩以及学号排序。
- 排序时,我们可以自定义排序的规则:首先是总分,其次是语文成绩,最后是学号。
- 输出:输出前 5 名学生的学号和总分。
时间复杂度分析
- 对于 n ≤ 300,排序的时间复杂度是 O(n log n),可以高效地完成任务。
结论
该问题的核心是排序问题,通过自定义排序规则,能够精确按照要求排序并输出结果。