90分求调
查看原帖
90分求调
1008167
weicongjun楼主2024/4/29 18:48
#include<bits/stdc++.h>
using namespace std;
struct node{
	int a,b,c,id,score;
}x[10005];
int cnt[10005];
bool cmp1(node l,node r){
	if(l.a+l.b+l.c==r.a+r.b+r.c){
		if(l.a+l.b==r.a+r.b){
			if(max(l.a,l.b)==max(r.a,r.b)){
				return 0;
			}
			return max(l.a,l.b)>max(r.a,r.b);
		}
		return l.a+l.b>r.a+r.b;
	}
	return l.a+l.b+l.c>r.a+r.b+r.c;
}
bool cmp2(node m,node n){
	return m.id<n.id;
}
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>x[i].a>>x[i].b>>x[i].c;
		x[i].id=i;
	}
	sort(x+1,x+n+1,cmp1);
	/*for(int i=1;i<=n;i++){
		cout<<x[i].a<<' '<<x[i].b<<' '<<x[i].c<<'\n'; 
	}*/
	/*for(int i=1;i<=n;i++){
		cnt[i]=x[i].a+x[i].b+x[i].c;
		cout<<cnt[i]<<' ';
	}*/
	int now=1;
	x[1].score=1;
	for(int i=2;i<=n;i++){
		if(cnt[i]!=cnt[i-1])
			cout<<i<<' ',now=i;
		if(cnt[i]==cnt[i-1]){
			if(x[i].a+x[i].b==x[i-1].a+x[i-1].b){
				if(max(x[i].a,x[i].b)==max(x[i-1].a,x[i-1].b)){
					x[i].score=now;
					continue;
				}
				x[i].score=i;
				now=i;
				continue;
			}
			x[i].score=i;
			now=i;
			continue;
		}
	}
	sort(x+1,x+n+1,cmp2);
	for(int i=1;i<=n;i++){
		cout<<x[i].score<<'\n';
	}
	return 0;
}
2024/4/29 18:48
加载中...