随便写写
2025-11-07 12:23:35
发布于:北京
8阅读
0回复
0点赞
关键应用:a[i] = j,表示编号为 i 的学生,排名为 j
参考代码
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e4 + 10;
int n;
struct Node {
int fg1, fg2, fg3;
int id;
};
Node a[N];
int ans[N];
bool cmp (Node x, Node y) {
if (x.fg1 != y.fg1) {
return x.fg1 > y.fg1;
} else if (x.fg2 != y.fg2) {
return x.fg2 > y.fg2;
} else {
return x.fg3 > y.fg3;
}
}
int main () {
cin >> n;
for (int i = 1; i <= n; i ++) {
int chs, math, eng;
cin >> chs >> math >> eng;
a[i].fg1 = chs + math + eng;
a[i].fg2 = chs + math;
a[i].fg3 = max(chs, math);
a[i].id = i;
}
sort(a + 1, a + 1 + n, cmp);
ans[a[1].id] = 1;
for (int i = 2, j = 1; i <= n; i ++) {
if (a[i].fg1 != a[j].fg1 || a[i].fg2 != a[j].fg2 || a[i].fg3 != a[j].fg3) {
j = i;
}
ans[a[i].id] = j;
}
for (int i = 1; i <= n; i ++) {
cout << ans[i] << endl;
}
return 0;
}
这里空空如也




有帮助,赞一个