社区讨论

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 条回复,欢迎继续交流。

正在加载回复...