求助,只对了#1
查看原帖
求助,只对了#1
1145044
ichenyubo楼主2024/10/19 15:39
#include<bits/stdc++.h>
using namespace std;
int n;
struct M{
	int id;
	int g,s,b;
	int r,best;
	void in() {
		cin>>g>>s>>b;
	}
}a[200005]; 
bool cmpgold(M a,M b) {
	return a.g>b.g;
}
bool cmpsilver(M a,M b) {
	return a.s>b.s;
}
bool cmpbronze(M a,M b) {
	return a.b>b.b;
}
bool cmpid(M a,M b) {
	return a.id<b.id;
}
int main(){
//	freopen("medal3.in","r",stdin);
//	freopen("medal3.out","w",stdout);	
	
	cin>>n;
	for(int i=1;i<=n;i++) {
		a[i].in();
		a[i].id=i;
		a[i].best=200010;
	}
	
	sort(a+1,a+n+1,cmpgold);
	a[1].r=1;
	a[1].best=1;
	for(int i=2;i<=n;i++) {
		if(a[i].g==a[i-1].g) {
			a[i].r=a[i-1].r;
			a[i].best=min(a[i].best,a[i].r);
		}
		else {
			a[i].r=i;
		}
	}
	
	sort(a+1,a+n+1,cmpsilver);
	a[1].r=1;
	a[1].best=1;
	for(int i=2;i<=n;i++) {
		if(a[i].s==a[i-1].s) {
			a[i].r=a[i-1].r;
			a[i].best=min(a[i].best,a[i].r);
		}
		else {
			a[i].r=i;
		}
	}
	
	sort(a+1,a+n+1,cmpbronze);
	a[1].r=1;
	a[1].best=1;
	for(int i=2;i<=n;i++) {
		if(a[i].b==a[i-1].b) {
			a[i].r=a[i-1].r;
			a[i].best=min(a[i].best,a[i].r);
		}
		else {
			a[i].r=i;
		}
	}
	
	sort(a+1,a+n+1,cmpid);
	for(int i=1;i<=n;i++) {
		cout<<a[i].best<<"\n";
	}
	return 0;
}
2024/10/19 15:39
加载中...