Submission #747777

#TimeUsernameProblemLanguageResultExecution timeMemory
7477771075508020060209tcCircle selection (APIO18_circle_selection)C++14
7 / 100
3062 ms18516 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define X first #define Y second int n; pair<int,int>pts[300005]; int rr[300005]; int ans[300005]; int dis(int a,int b){ int ret=(pts[a].first-pts[b].first)*(pts[a].first-pts[b].first)+(pts[a].second-pts[b].second)*(pts[a].second-pts[b].second); return ret; } signed main() { cin>>n; for(int i=1;i<=n;i++){ cin>>pts[i].X>>pts[i].Y>>rr[i]; } while(1){ int mx=0; for(int i=1;i<=n;i++){ if(ans[i]){continue;} mx=max(mx,rr[i]); } if(mx==0){break;} int nw=0; for(int i=1;i<=n;i++){ if(ans[i]){continue;} if(rr[i]==mx){ nw=i; break; } } for(int i=1;i<=n;i++){ if(ans[i]){continue;} if(dis(nw,i)<=(rr[i]+rr[nw])*(rr[i]+rr[nw])){ ans[i]=nw; } } } for(int i=1;i<=n;i++){ cout<<ans[i]<<" "; } }
#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...