Submission #932181

#TimeUsernameProblemLanguageResultExecution timeMemory
932181teacupCircle selection (APIO18_circle_selection)C++14
7 / 100
3104 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ii pair<int,int> #define vi vector<int> typedef tuple<int,int,int> iii; typedef tuple<int,int,int,int> iiii; typedef vector<ii> vii; struct Comp{ bool operator()(const iiii a, const iiii b){ if (get<2>(a)!=get<2>(b)) return get<2>(a) < get<2>(b); else return get<3>(a) > get<3>(b); } }; int32_t main(){ int n,x,y,r,idx; cin>>n; vector<iiii> V; vi AL[n]; for (int i=0; i<n; i++){ cin>>x>>y>>r; V.emplace_back(iiii({x,y,r,i})); } for (int i=0; i<n; i++){ for (int j=i+1; j<n; j++){ if ((get<0>(V[i])-get<0>(V[j]))*(get<0>(V[i])-get<0>(V[j])) + (get<1>(V[i])-get<1>(V[j]))*(get<1>(V[i])-get<1>(V[j])) <= (get<2>(V[i])+get<2>(V[j]))*(get<2>(V[i])+get<2>(V[j]))){ AL[i].emplace_back(j); AL[j].emplace_back(i); } } } priority_queue<iiii, vector<iiii>, Comp> PQ; for (int i=0; i<n; i++){ PQ.push(V[i]); } bool vis[n]={}; int ans[n]; while (!PQ.empty()){ iiii curr=PQ.top(); PQ.pop(); idx = get<3>(curr); if (vis[idx]) continue; ans[idx]=idx; for (auto nb : AL[idx]){ if (!vis[nb]){ vis[nb]=true; ans[nb]=idx; } } } for (int i=0; i<n; i++) cout<<ans[i]+1<<" "; 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...