Submission #698767

#TimeUsernameProblemLanguageResultExecution timeMemory
698767vjudge1Circle selection (APIO18_circle_selection)C++17
7 / 100
3089 ms32204 KiB
#include "bits/stdc++.h" #define ll long long #define pb push_back #define endl '\n' #define fi first #define sec second using namespace std; ll dis(pair<ll,ll>p1,pair<ll,ll>p2) { ll a=(p1.first-p2.first) , b=(p1.second-p2.second); return (a*a)+(b*b); } bool sorting1 (pair<ll,ll>a,pair<ll,ll>b) { if(a.first!=b.first) return (a.first>b.first); return (a.second<b.second); } bool sorting2 (pair<pair<ll,ll>,pair<ll,ll>>a,pair<pair<ll,ll>,pair<ll,ll>>b) { if(a.fi.fi!=b.fi.fi) return (a.fi.fi>b.fi.fi); return (a.sec.sec<b.sec.sec); } signed main () { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); ll n; cin>>n; bool m=1; vector<pair<ll,pair<ll,ll>>>inp(n); for(int i=0;i<n;i++) { ll x,y,z; cin>>x>>y>>z; if(y)m=0; inp[i]={x,{y,z}}; } if(!m) { vector<pair<ll,ll>>v,c; for(int i=0;i<n;i++) { ll x=inp[i].fi,y=inp[i].sec.fi,r=inp[i].sec.sec; c.pb({x,y}); v.pb({r,i}); } sort(v.begin(),v.end(),sorting1); ll ans[n]={}; for(int i=0;i<n;i++) { if(ans[v[i].second])continue; for(int j=i;j<n;j++) { if(ans[v[j].second])continue; if(dis(c[v[i].second],c[v[j].second])<=((v[i].first+v[j].first)*(v[i].first+v[j].first)) ) ans[v[j].second]=v[i].second+1; } } for(int i=0;i<n;i++) cout<<ans[i]<<' '; } else { vector<pair<pair<ll,ll>,pair<ll,ll>>>v,c; for(int i=0;i<n;i++) { ll x=inp[i].fi,y=inp[i].sec.fi,r=inp[i].sec.sec; c.pb({{x-r,x+r},{r,i}}); v.pb({{r,i},{x-r,x+r}}); } sort(v.begin(),v.end(),sorting2); sort(c.begin(),c.end()); ll ans[n]={}; for(int i=0;i<n;i++) { if(ans[v[i].fi.sec])continue; swap(v[i].sec,v[i].fi); auto u=lower_bound(c.begin(),c.end(),v[i]); for(ll j=u-c.begin();j<n;j++) { if(v[i].fi.sec<c[j].fi.fi)break; if(ans[c[j].sec.sec])continue; ans[c[j].sec.sec]=v[i].sec.sec+1; } } for(int i=0;i<n;i++) cout<<ans[i]<<' '; } return 0; } /* 11 9 9 2 13 2 1 11 8 2 3 3 2 3 12 1 12 14 1 9 8 5 2 8 2 5 2 1 14 4 2 14 14 1 4 0 0 4 1 0 1 2 0 3 7 0 1 */

Compilation message (stderr)

circle_selection.cpp: In function 'int main()':
circle_selection.cpp:77:22: warning: unused variable 'y' [-Wunused-variable]
   77 |       ll x=inp[i].fi,y=inp[i].sec.fi,r=inp[i].sec.sec;
      |                      ^
#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...