解题思路:

结构体的方法就不多说了,当然不使用结构题也是ok的,比如间接排序。

这里我们来说一种骚操作:

                首先,三科分数总和是小于等于300,即最多三位数

                其次,语文学科的分数小于等于100,即最多三位数

                再次,学员编号是小于等于300的(只是这里题目好像没有数据范围,其他oj的范围都是300),即最多三位数

                那么,把总分、语文分数、学号可以组合成一个整数,总分*1000000+语文*1000+999-学号。

                因为排序规则是:先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面。所以存储999-i的值那么从大到小排序实际上就是从小到大排序哦。

                对于任意一个组合的整数a:学号=999 -a%1000,总分=a/1000000。


注意事项:
                拿样例自己先试试呗~
参考代码:

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
	int n, x, y, z, p[310];
	cin >> n;
	for (int i = 1; i <= n; ++i) {
		cin >> x >> y >> z;
		p[i] = (x + y + z) * 1000000 + x * 1000 + 999 - i;
	}
	sort(p + 1, p + n + 1);
	for (int i = n; i >= n - 4; --i)
		cout << 999 - p[i] % 1000 << " " << p[i] / 1000000 << endl;
	return 0;
}


点赞(0)
 

0.0分

23 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 5 条评论

李浩成 1年前 回复TA
大佬nb,秀我一脸
zlx 2年前 回复TA
大佬nb
海深不语 3年前 回复TA
牛逼
LBD西瓜泥 3年前 回复TA
大佬牛逼,秀我一脸。
cynic 3年前 回复TA
大佬牛逼,秀我一脸。