社区讨论
奖学金求条,玄关
灌水区参与者 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 条回复,欢迎继续交流。
正在加载回复...