This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ii pair<ll,ll>
#define iii tuple<ll,ll,ll>
#define iiii tuple<ll,ll,ll,ll>
const ll maxn=5005;
iii arr[maxn];
ll ans[maxn];
iiii ord[maxn];
bool cmp(iiii a, iiii b){
if (get<2>(a)==get<2>(b)) return get<3>(a)< get<3>(b);
return get<2>(a)>get<2>(b);
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
ll n,a,b,c;
cin>>n;
for (int i=1;i<=n;i++){
cin>>a>>b>>c;
arr[i]={a,b,c};
ord[i]={a,b,c,i};
}
sort(ord+1,ord+n+1,cmp);
ll x1,x2,y1,y2,r1,r2,idx1,idx2;
for (int i=1;i<=n;i++){
tie(x1,y1,r1,idx1)=ord[i];
for (int j=1;j<=n;j++){
tie(x2,y2,r2,idx2)=ord[j];
if (idx1!=idx2 && ans[idx2]!=idx2) continue;
//cerr<<i<<' '<<idx<<' '<<(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)<<' '<<(r1+r2)*(r1+r2)<<endl;
if ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)<=(r1+r2)*(r1+r2)){
ans[idx1]=idx2;
break;
}
}
}
for (int i=1;i<=n;i++) cout<<ans[i]<<' ';
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |