Submission #138612

#TimeUsernameProblemLanguageResultExecution timeMemory
138612FedericoSCircle selection (APIO18_circle_selection)C++14
7 / 100
3070 ms23828 KiB
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long int ll;
typedef pair<ll,ll> pll;

int N;
ll X[300005],Y[300005],R[300005];
ll A[300005],P[300005];
vector<pll> V;

int main(){
	cin>>N;
	for(int i=0;i<N;i++){
		cin>>X[i]>>Y[i]>>R[i];
		V.push_back({-R[i],i});
	}
	sort(V.begin(),V.end());
	for(int i=0;i<N;i++)
		P[i]=V[i].second;

	//for(int i=0;i<N;i++)cout<<P[i]+1<<" ";cout<<endl;

	for(int i=0;i<N;i++)
		for(int j=i+1;j<N;j++)
			if(
				(X[P[i]]-X[P[j]])*(X[P[i]]-X[P[j]])+
				(Y[P[i]]-Y[P[j]])*(Y[P[i]]-Y[P[j]])<=
				(R[P[i]]+R[P[j]])*(R[P[i]]+R[P[j]])
				and !A[P[j]] and !A[P[i]]
			)
				A[P[j]]=P[i]+1;

	for(int i=0;i<N;i++)
		cout<<(A[i]?A[i]:(i+1))<<" ";

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...