Submission #240003

#TimeUsernameProblemLanguageResultExecution timeMemory
240003alishahali1382Circle selection (APIO18_circle_selection)C++14
23 / 100
2684 ms48888 KiB
#include <bits/stdc++.h> #pragma GCC optimize ("O2,unroll-loops") //#pragma GCC optimize("no-stack-protector,fast-math") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") using namespace std; typedef long long ll; typedef long double ld; typedef pair<int, int> pii; typedef pair<pii, int> piii; typedef pair<ll, ll> pll; #define debug(x) cerr<<#x<<'='<<(x)<<endl; #define debugp(x) cerr<<#x<<"= {"<<(x.first)<<", "<<(x.second)<<"}"<<endl; #define debug2(x, y) cerr<<"{"<<#x<<", "<<#y<<"} = {"<<(x)<<", "<<(y)<<"}"<<endl; #define debugv(v) {cerr<<#v<<" : ";for (auto x:v) cerr<<x<<' ';cerr<<endl;} #define all(x) x.begin(), x.end() #define pb push_back #define kill(x) return cout<<x<<'\n', 0; const ld eps=1e-7; const int inf=1000000010; const ll INF=10000000000000010LL; const int mod=1000000007; const int MAXN=300010, LOG=20; int n, m, k, u, v, x, y, t, a, b; int X[MAXN], Y[MAXN], R[MAXN], P[MAXN], L=inf; int ans[MAXN]; map<pii, vector<int>> mp; bool check(int i, int j){ ll dx=X[i]-X[j], dy=Y[i]-Y[j], r=R[i]+R[j]; return dx*dx+dy*dy<=r*r; } void Build(){ mp.clear(); for (int i=1; i<=n; i++) if (!ans[i]) mp[{X[i]/L, Y[i]/L}].pb(i); } int main(){ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); cin>>n; for (int i=1; i<=n; i++) cin>>X[i]>>Y[i]>>R[i], P[i]=i; sort(P+1, P+n+1, [](int i, int j){ return pii(R[i], -i)>pii(R[j], -j); }); L=R[P[1]]; Build(); for (int i=1; i<=n; i++){ int id=P[i]; if (ans[id]) continue ; //if (R[id]<.75*L) L=R[id], Build(); int x=X[i]/L, y=Y[i]/L; for (int xx=x-2; xx<=x+2; xx++) for (int yy=y-2; yy<=y+2; yy++) if (mp.count({xx, yy})){ vector<int> vec=mp[{xx, yy}], v2; for (int i:vec){ if (check(id, i)) ans[i]=id; else v2.pb(i); } mp[{xx, yy}]=v2; } } for (int i=1; 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 */
#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...