Submission #167686

#TimeUsernameProblemLanguageResultExecution timeMemory
167686tinjyuCircle selection (APIO18_circle_selection)C++14
7 / 100
3051 ms32852 KiB
#include <iostream> #include <cmath> using namespace std; long long int k[300005],n,x[500005],y[500005],ri[500005],id[500005],tmp[500005][4],tag[500005],ans[500005]; int qs(int s,int e) { int l=s,mid=(s+e)/2,r=mid+1,p=l; if(mid>s)qs(s,mid); if(e>mid+1)qs(mid+1,e); while(l<=mid && r<=e) { if(ri[l]>ri[r] || (ri[l]==ri[r] && id[l]<id[r])) { tmp[p][0]=x[l]; tmp[p][1]=y[l]; tmp[p][2]=ri[l]; tmp[p][3]=id[l]; l++; p++; } else { tmp[p][0]=x[r]; tmp[p][1]=y[r]; tmp[p][2]=ri[r]; tmp[p][3]=id[r]; r++; p++; } } while(l<=mid) { tmp[p][0]=x[l]; tmp[p][1]=y[l]; tmp[p][2]=ri[l]; tmp[p][3]=id[l]; l++; p++; } while(r<=e) { tmp[p][0]=x[r]; tmp[p][1]=y[r]; tmp[p][2]=ri[r]; tmp[p][3]=id[r]; p++; r++; } for(int i=s;i<=e;i++) { x[i]=tmp[i][0]; y[i]=tmp[i][1]; ri[i]=tmp[i][2]; id[i]=tmp[i][3]; } } int main(){ cin>>n; for(int i=1;i<=n;i++) { cin>>x[i]>>y[i]>>ri[i]; id[i]=i; } qs(1,n); for(int i=1;i<=n;i++) { if(tag[i]==1)continue; ans[id[i]]=id[i]; tag[i]=1; for(int j=1;j<=n;j++) { if(tag[j]==1 || sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))>(ri[i]+ri[j]))continue; ans[id[j]]=id[i]; tag[j]=1; } } for(int i=1;i<=n;i++)cout<<ans[i]<<" "; }

Compilation message (stderr)

circle_selection.cpp: In function 'int qs(int, int)':
circle_selection.cpp:57:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
#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...