零分求调
查看原帖
零分求调
1551077
xuziyou楼主2025/6/26 10:02
#include <bits/stdc++.h>
using namespace std;
int m;
struct A {
	int ChineseMath,ChineseMath_max,all,th,name;
} a[10005],ls;
bool cmp(A aa,A bb) {
	if(aa.all!=bb.all)return aa.all<bb.all;
	else if(aa.ChineseMath!=bb.ChineseMath)return aa.ChineseMath<bb.ChineseMath;
	else if(aa.ChineseMath_max!=bb.ChineseMath_max)return aa.ChineseMath_max<bb.ChineseMath_max;
	else return aa.all<bb.all;
}
bool cmp1(A aa1,A bb1) {
	return aa1.name>bb1.name;
}
bool cmp2(A aa2,A bb2) {
	return aa2.th>bb2.th;
}
void dr();
int main() {
	dr();
	sort(a+1,a+m+1,cmp);
	for(int i=1; i<=m; i++)a[i].th=i;
	sort(a+1,a+m+1,cmp2);
	ls.th=a[1].th;
	ls.all=a[1].all;
	ls.ChineseMath=a[1].ChineseMath;
	ls.ChineseMath_max=a[1].ChineseMath_max;
	for(int i=2; i<=m; i++) {
		if(ls.all==a[i].all && ls.ChineseMath==a[i].ChineseMath && ls.ChineseMath_max==a[i].ChineseMath_max) {
			a[i].th=ls.th;
		} else {
			ls.th=a[i].th;
			ls.all=a[i].all;
			ls.ChineseMath=a[i].ChineseMath;
			ls.ChineseMath_max=a[i].ChineseMath_max;
		}
	}
	sort(a+1,a+m+1,cmp1);
	for(int i=1; i<=m; i++) {
		cout<<a[i].th<<endl;
	}
	return 0;
}
void dr() {
	cin>>m;
	for(int i=1; i<=m; i++) {
		int c,m,e;
		cin>>c>>m>>e;
		a[i].name=i;
		a[i].all=c+m+e;
		a[i].ChineseMath=c+m;
		a[i].ChineseMath_max=max(c,m);
	}
}
2025/6/26 10:02
加载中...