大nao求调
查看原帖
大nao求调
1116622
zjr0801楼主2024/11/20 12:56
#include<bits/stdc++.h>
using namespace std;
const int maxn=10000+10;
struct node{
	int c,m,e,s,p,id;
} st[maxn];
int n;
bool cmp(node x,node y){
	if(x.s==y.s){
		if(x.c+x.m==y.c+y.m){//总分相同,比较语,数两科总分
			return max(x.c,x.m)>max(y.c,y.m);//语,数两科总分相同,比较语,数两科最高分
		}else return (x.c+x.m)>(y.c+y.m);
	}else return x.s>y.s;
}
bool cmp2(node x,node y){return x.id<y.id;}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){//读入 
		cin>>st[i].c>>st[i].m>>st[i].e;
		st[i].s=st[i].c+st[i].m+st[i].e; st[i].id=i;
	}
	sort(st+1,st+n+1,cmp);
//	cout<<"id s c+m ma(c,m)\n";
//	for(int i=1;i<=n;i++) cout<<st[i].id<<' '<<st[i].s<<' '<<st[i].c+st[i].m<<' '<<max(st[i].c,st[i].m)<<endl;
	for(int i=1;i<=n;i++) st[i].p=i;
	sort(st+1,st+n+1,cmp2);
	for(int i=1;i<n;i++){
		if(st[i].s==st[i+1].s && st[i].c+st[i].m==st[i+1].c+st[i+1].m && max(st[i].c,st[i].m)==max(st[i+1].c,st[i+1].m)) st[i+1].p=st[i].p;
		cout<<st[i].p<<"\n";
	}
	cout<<st[n].p;
	return 0;
}
2024/11/20 12:56
加载中...