Submission #982218

#TimeUsernameProblemLanguageResultExecution timeMemory
982218Faisal_SaqibCircle selection (APIO18_circle_selection)C++17
7 / 100
3074 ms1048576 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int N=3e5+10;; vector<int> adj[N]; ll who[N]; void solve() { ll n; cin>>n; vector<ll> x(n),y(n),r(n); set<ll> tp; for(int i=0;i<n;i++) { cin>>x[i]>>y[i]>>r[i]; tp.insert(y[i]); } if(tp.size()==1) { priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> rem,remming; for(int i=0;i<n;i++) remming.push({x[i]-r[i],i}); for(int i=0;i<n;i++) rem.push({-r[i],i}); while(rem.size()) { auto p=rem.top(); rem.pop(); if(who[p.second]!=0) continue; ll val=x[p.second]+r[p.second]; while(remming.size()>0) { auto it=remming.top(); if(it.first<=val) { remming.pop(); who[it.second]=p.second+1; } else { break; } } } } else { for(int i=0;i<n;i++) { for(int j=0;j<=i;j++) { // ( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) ) <= (r1+r2)² ll dist=(r[i]+r[j])*(r[i]+r[j]); ll dp=( (x[i]-x[j])*(x[i]-x[j]) + (y[i]-y[j])*(y[i]-y[j]) ); if(dp<=dist) { adj[i].push_back(j); adj[j].push_back(i); } } } set<pair<int,int>> rem; for(int i=0;i<n;i++) rem.insert({-r[i],i}); while(rem.size()) { auto p=*begin(rem); rem.erase(begin(rem)); if(who[p.second]!=0) continue; for(auto op:adj[p.second]) if(who[op]==0) who[op]=p.second+1; } } for(int i=0;i<n;i++) { cout<<who[i]<<' '; } cout<<endl; } int main() { cin.tie(0); cout.tie(0); ios::sync_with_stdio(0); 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...