Submission #440129

#TimeUsernameProblemLanguageResultExecution timeMemory
440129KULIKOLDCircle selection (APIO18_circle_selection)C++17
7 / 100
3073 ms7876 KiB
//#pragma GCC optimize ("O3") #include <bits/stdc++.h> using namespace std; typedef long long ll; #define endl '\n' const int DIM = 1E5+7; const int INF = 1E9; struct node{ ll x,y,r,pos; } A[DIM]; int P[DIM],ans[DIM]; bool mc(const node &a,const node &b){ if (a.r==b.r){ return a.pos<b.pos; } return a.r>b.r; } bool can(const node &a,const node &b){ return (a.r+b.r)*(a.r+b.r)>=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); } int solve(){ int n; cin>>n; for(int i = 1;i<=n;++i){ cin>>A[i].x>>A[i].y>>A[i].r; A[i].pos = i; } sort(A+1,A+1+n,mc); for(int i = 1;i<=n;++i){ if (P[i]) continue; P[i] = i; ans[A[i].pos] = A[i].pos; for(int j = i+1;j<=n;++j) if (!P[j] && can(A[i],A[j])) P[j] = i,ans[A[j].pos] = A[i].pos; } for(int i = 1;i<=n;++i) cout<<ans[i]<<' '; cout<<endl; return 1; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); return 0; }
#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...