TLE
查看原帖
TLE
1281623
Problem1613end楼主2024/10/13 15:39
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int n,bes[200100];
struct stu{
	int g,s,b,xh,pm;
}su[200100];
bool cmp1(stu at,stu bt){
	return at.g>=bt.g;
}
bool cmp2(stu at,stu bt){
	return at.s>=bt.s;
}
bool cmp3(stu at,stu bt){
	return at.b>=bt.b;
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		scanf("%d%d%d",&su[i].g,&su[i].s,&su[i].b);
		su[i].xh=i;
	}
	sort(su+1,su+n+1,cmp1);
	for(int i=1;i<=n;i++){
		if(i==1){
			bes[su[i].xh]=1;
			su[i].pm=1;
		}
		else{
			if(su[i].g==su[i-1].g){
				su[i].pm=su[i-1].pm;
				bes[su[i].xh]=su[i-1].pm;
			}
			else{
				su[i].pm=i;
				bes[su[i].xh]=i;
			}
		}
	}
	sort(su+1,su+n+1,cmp2);
	for(int i=1;i<=n;i++){
		if(i==1){
			bes[su[i].xh]=1;
			su[i].pm=1;
		}
		else{
			if(su[i].s==su[i-1].s){
				su[i].pm=su[i-1].pm;
				bes[su[i].xh]=min(su[i-1].pm,bes[su[i].xh]);
			}
			else{
				su[i].pm=i;
				bes[su[i].xh]=min(i,bes[su[i].xh]);
			}
		}
	}
	sort(su+1,su+n+1,cmp3);
	for(int i=1;i<=n;i++){
		if(i==1){
			bes[su[i].xh]=1;
			su[i].pm=1;
		}
		else{
			if(su[i].b==su[i-1].b){
				su[i].pm=su[i-1].pm;
				bes[su[i].xh]=min(su[i-1].pm,bes[su[i].xh]);
			}
			else{
				su[i].pm=i;
				bes[su[i].xh]=min(i,bes[su[i].xh]);
			}
		}
	}
	for(int i=1;i<=n;i++){
		printf("%d\n",bes[i]);
	}
	return 0;
}
2024/10/13 15:39
加载中...