80分求救
查看原帖
80分求救
1071370
renzhenxuexi123楼主2024/11/30 17:23

代码:

#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;
}
2024/11/30 17:23
加载中...