五分求条
查看原帖
五分求条
727220
YG_King楼主2024/10/15 12:29
#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read(){
	int x;scanf("%d",&x);return x;
}
const int N=2e5+10;
int b[N],c[N],d[N];
struct node{
	int jp,yp,tp,bh;
}a[200000+5];
bool cmp1(int x,int y){
	return x>y;
}
signed main()
{
	//freopen("medal2.in","r",stdin);
	//freopen("medal.out","w",stdout);
	int T=read();
	for(int i=1;i<=T;i++) {
		a[i].jp=read(),a[i].yp=read(),a[i].tp=read();
		b[i]=a[i].jp,c[i]=a[i].yp,d[i]=a[i].tp;
	}
	sort(b+1,b+T+1,cmp1);
	sort(c+1,c+T+1,cmp1);
	sort(d+1,d+T+1,cmp1);
	for(int i=1;i<=T;i++){
		int l=1,r=T,mid,ans=0;
		while(l<=r){
			mid=l+r>>1;
			if(b[mid]>b[i]) ans=max(ans,mid),l=mid+1;
			else r=mid-1;
		}
		if(ans==0) {
			cout<<"1\n";
			continue;
		}
		int t1=ans+1;
		l=1,r=T,mid,ans=0;
		while(l<=r){
			mid=l+r>>1;
			if(c[mid]>c[i]) ans=max(ans,mid),l=mid+1;
			else r=mid-1;
		}
		if(ans==0) {
			cout<<"1\n";
			continue;
		}
		int t2=ans+1;
		l=1,r=T,mid,ans=0;
		while(l<=r){
			mid=l+r>>1;
			if(d[mid]>d[i]) ans=max(ans,mid),l=mid+1;
			else r=mid-1;
		}
		if(ans==0) {
			cout<<"1\n";
			continue;
		}
		int t3=ans+1;
		printf("%d\n",min(min(t1,t2),t3));
	}
	return 0;
}


2024/10/15 12:29
加载中...