Submission #106395

#TimeUsernameProblemLanguageResultExecution timeMemory
106395usernameCircle selection (APIO18_circle_selection)C++14
49 / 100
3068 ms287032 KiB
#pragma GCC optimize("O3") #include<stdint.h> #include<ext/pb_ds/assoc_container.hpp> #include<ext/pb_ds/tree_policy.hpp> #include<ext/rope> using namespace __gnu_pbds; using namespace __gnu_cxx; #define VIS(it,con) for(auto it=con.begin();it!=con.end();++it) #define pob pop_back #define pf push_front #define pof pop_front #define MIN(x,y) (x=min(x,(y))) #define MAX(x,y) (x=max(x,(y))) #define mid (l+r>>1) #define lch (idx*2+1) #define rch (idx*2+2) /*****************************************************************************/ #include<bits/stdc++.h> #define int int_fast64_t using namespace std; typedef pair<int,int> pii; typedef vector<int> VI; #define REP(i,j,k) for(register int i=(j);i<(k);++i) #define RREP(i,j,k) for(register int i=(j)-1;i>=(k);--i) #define ALL(a) a.begin(),a.end() #define MST(a,v) memset(a,(v),sizeof a) #define pb push_back #define F first #define S second #define endl '\n' // #define __debug #ifdef __debug #define IOS (void)0 #define de(...) cerr<<__VA_ARGS__ #define ar(a,s,t) {REP(__i,s,t)de(a[__i]<<' ');de(endl);} #else #define IOS cin.tie(0),cout.tie(0),ios_base::sync_with_stdio(false) #define de(...) (void)0 #define ar(...) (void)0 #endif /***********************************default***********************************/ #define f2(x) ((x)*(x)) const int maxn=3e5+9,inf=1ll<<60,bl=3e9; struct C{int x,y,r,id;}a[maxn]; int n,rmv[maxn],res[maxn]; unordered_map<int,list<int>>mp; list<int>ls; main(){ IOS; cin>>n; REP(i,0,n)cin>>a[i].x>>a[i].y>>a[i].r,a[i].id=i; sort(a,a+n,[](C x,C y){return x.r==y.r?x.id<y.id:x.r>y.r;}); MST(rmv,0); int k=inf; REP(i,0,n){ if(rmv[i])continue; if(2*a[i].r<k){ k=a[i].r; mp.clear(); REP(j,0,n){ if(!rmv[j]){ mp[a[j].x/k*bl+a[j].y/k].pb(j); } } } REP(x,a[i].x/k-2,a[i].x/k+3)REP(y,a[i].y/k-2,a[i].y/k+3){ for(auto it=mp[x*bl+y].begin();it!=mp[x*bl+y].end();){ C c=a[*it]; if(f2(a[i].x-c.x)+f2(a[i].y-c.y)<=f2(a[i].r+c.r)){ res[c.id]=a[i].id; rmv[*it]=1; mp[x*bl+y].erase(it++); }else ++it; } } } REP(i,0,n)cout<<res[i]+1<<" "; }

Compilation message (stderr)

circle_selection.cpp:49:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main(){
      ^
#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...