社区讨论
80分求救
B3968[GESP202403 五级] 成绩排序参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m43yto68
- 此快照首次捕获于
- 2024/11/30 17:23 去年
- 此快照最后确认于
- 2025/11/04 13:35 4 个月前
代码:
CPP#include <bits/stdc++.h>
using namespace std;
struct stu {
int c,s,y,pm;
}a[1000000],b[1000000];
int cmp(stu p,stu q){
int f = p.c + p.s + p.y,d = q.c + q.s + q.y;
if(f != d) return f > d;
if(f - p.y != d - q.y) return f - p.y > d - q.y;
if(max(p.c,p.s) != max(q.c,q.s)) return max(p.c,p.s) > max(q.c,q.s);
return 2;
}
int check(stu a,stu b) {
return a.c == b.c && a.s == b.s && a.y == b.y;
}
int main(){
int n;
cin >> n;
for(int i = 1;i <= n;i ++) {
cin >> a[i].c >> a[i].s >> a[i].y;
b[i].c = a[i].c, b[i].s = a[i].s, b[i].y = a[i].y;
}
sort(a + 1,a + 1 + n,cmp);
for(int i = 1;i <= n;i ++) {
if(cmp(a[i - 1],a[i]) != 2) {
a[i].pm = i;
} else {
a[i].pm = i - 1;
}
}
for(int i = 1;i <= n;i ++) {
for(int j = 1;j <= n;j ++) {
if(check(b[i],a[j])) {
cout << a[j].pm << '\n';
break;
}
}
}
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...