社区讨论

奖学金求条,玄关

灌水区参与者 4已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@m24tv0iv
此快照首次捕获于
2024/10/11 22:33
去年
此快照最后确认于
2025/11/04 17:24
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
struct student {
	int no;
	int c, m, e;
	int sum;
} s[305];
bool cmp(student x, student y) {
	if (x.sum == y.sum && x.c == y.c && x.m == y.m && x.e == y.e) return x.no < y.no; 
	if (x.sum == y.sum && x.c == y.c && x.m == y.m) return x.e > y.e; 
	if (x.sum == y.sum && x.c == y.c) return x.m > y.m; 
	if (x.sum == y.sum) return x.c > y.c; 
	return x.sum > y.sum;
}
void QuickSort(student s[], int left, int right) {
	if (left < right) {
		int l = left, r = right;
		student tmp = s[left];
		while (l < r) {
			while (l < r && cmp(tmp, s[r])) --r; 
			s[l] = s[r];
			while (l < r && cmp(tmp, s[l])) ++l; 
			s[r] = s[l];
		}
		s[l] = tmp;
		QuickSort(s, left, l - 1);
		QuickSort(s, r + 1, right);
	}
} 
int main() {
	int n;
	scanf("%d", &n);
	for (int i = 1; i <= n; ++i) {
		scanf("%d%d%d", &s[i].c, &s[i].m, &s[i].e);
		s[i].no = i;
		s[i].sum = s[i].c + s[i].m + s[i].e;
	}
	QuickSort(s, 1, n);
	for (int i = 1; i <= 5; ++i) 
		printf("%d %d\n", s[i].no, s[i].sum);
	return 0;
}
快排炸了

回复

9 条回复,欢迎继续交流。

正在加载回复...