Submission #982468

#TimeUsernameProblemLanguageResultExecution timeMemory
982468Muhammad_AneeqCircle selection (APIO18_circle_selection)C++17
7 / 100
3084 ms100908 KiB
/* بسم الله الرحمن الرحيم Author: (:Muhammad Aneeq:) */ #include <iostream> #include <set> #include <vector> #include <map> #include <algorithm> using namespace std; #define int long long int man(pair<int,int>a,pair<int,int>b) { return ((a.first-b.first)*(a.first-b.first)+(a.second-b.second)*(a.second-b.second)); } inline void solve() { int n; cin>>n; pair<int,int>a[n]; bool w=0; set<pair<int,int>>s; int ra[n]={}; for (int i=0;i<n;i++) { int x,y,r; cin>>x>>y>>r; a[i]={x,y}; if (y!=0) w=1; s.insert({-r,i}); ra[i]=r; } if (w==0) { int ans[n]={}; set<pair<int,int>>val; for (int i=0;i<n;i++) { val.insert({a[i].first,i}); val.insert({a[i].first+ra[i],i}); val.insert({a[i].first-ra[i],i}); } while (s.size()) { int i=(*begin(s)).second; s.erase(*begin(s)); auto lb=val.lower_bound({a[i].first-ra[i],i}); set<int>z; while (lb!=val.end()&&(*lb).first<=a[i].first+ra[i]) { z.insert((*lb).second); lb++; } for (auto j:z) { val.erase({a[j].first,j}); val.erase({a[j].first+ra[j],j}); val.erase({a[j].first-ra[j],j}); ans[j]=i; } } for (auto i:ans) cout<<i+1<<' '; cout<<endl; } else { int ans[n]={}; while (s.size()) { int r=(*begin(s)).first,i=(*begin(s)).second; s.erase(*begin(s)); ans[i]=i; vector<pair<int,int>>z; for (auto [r1,j]:s) { int dis=man(a[i],a[j]); if (dis<=((r+r1)*(r+r1))) z.push_back({r1,j}); if (z.size()&&n>5000) break; } for (auto j:z) { ans[j.second]=i; s.erase(j); } } for (auto i:ans) cout<<i+1<<' '; cout<<endl; } } signed main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); solve(); }
#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...