高一年级(1)班的小美老师需要对学生的考试成绩进行处理。单科考试的卷面总分为150分,考生得分一定为整数。 首先按照总分由大到小排序,如果总分相等则按照语文成绩由大到小排序。(输入保证没有两名学生的成绩完全相等)。 输入n个学生的学号和成绩(n<=1000),请输出按要求排序后所有学生的学号。
单组输入,第1行为n。 接下来n行每一行包含三个整数,分别为学号(>=1的任意正整数,同一组输入保证学号不重复)、语文成绩和数学成绩。
输出按要求排序后所有学生的学号,两个学号之间用空格隔开。
5 10001 95 90 10002 96 96 10003 90 95 10004 100 88 10005 98 94
10005 10002 10004 10001 10003
考点:排序
数据规模 n ≤ 1e3 | 限制 1 秒 / 256MB | 标准输入输出
参考方向:排序
先用 O(n log n) 排序把无序变有序,后续处理往往就简单了。
思路框架(排序 通法 · 非本题专属)
实现要点:在 C++ 中用 std::sort,Python 用 sorted();注意自定义比较函数的严格弱序。
复杂度:时间 O(n log n) | 空间 O(log n) ~ O(n)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1
5 / 10001 95 90 / 10002 96 96 / 10003 90 95 / 10004 100 88 / 10005 98 9410005 10002 10004 10001 10003解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:美团2023校招笔试-编程题(算法编程题)。