Submission #552504

#TimeUsernameProblemLanguageResultExecution timeMemory
552504zaneyuCircle selection (APIO18_circle_selection)C++14
15 / 100
628 ms60092 KiB
/*input 4 9 9 2 11 8 2 12 14 1 14 14 1 */ #include<bits/stdc++.h> #pragma GCC optimize("Ofast") #pragma target("avx3") using namespace std; #define REP(i,n) for(int i=0;i<n;i++) const int maxn=6e5+5; #define pb push_back #define lowb(x) x&(-x) #define ll long long #define MNTO(x,y) x=min(x,y) #define REP1(i,n) for(int i=1;i<=n;i++) #define pii pair<ll,ll> #define f first #define s second #define ALL(x) x.begin(),x.end() #define sz(x) (int)x.size() pair<pii,ll> arr[maxn]; inline bool inter(int a,int b){ ll d=(arr[a].f.s-arr[b].f.s)*(arr[a].f.s-arr[b].f.s)+(arr[a].f.f-arr[b].f.f)*(arr[a].f.f-arr[b].f.f); return d<=(arr[a].s+arr[b].s)*(arr[a].s+arr[b].s); } int ans[maxn]; int main(){ ios::sync_with_stdio(false),cin.tie(0); int n; cin>>n; map<int,int> mp; set<pii> s; vector<pii> vv; REP1(i,n) cin>>arr[i].f.f>>arr[i].f.s>>arr[i].s,vv.pb({arr[i].f.f-arr[i].s,-i}),vv.pb({arr[i].f.f+arr[i].s,i}); sort(ALL(vv)); vector<pii> prs; for(auto x:vv){ int i=abs(x.s); if(x.s>0){ auto it=s.find({arr[i].f.s,i}); if(it!=s.begin() and it!=prev(s.end())){ if(inter((*prev(it)).s,(*next(it)).s)) prs.pb({(*prev(it)).s,(*next(it)).s}); } s.erase(it); } else{ s.insert({arr[i].f.s,i}); auto it=s.find({arr[i].f.s,i}); if(it!=s.begin()){ if(inter((*prev(it)).s,i)) prs.pb({(*prev(it)).s,i}); } if(it!=prev(s.end())){ if(inter(i,(*next(it)).s)) prs.pb({i,(*next(it)).s}); } } //for(auto x:s) cout<<x.f<<' '<<x.s<<'\n'; // cout<<'\n'; } REP1(i,n) ans[i]=i; for(auto x:prs){ pii a={arr[x.f].s,-x.f},b={arr[x.s].s,-x.s}; if(a>b) ans[x.f]=ans[x.s]=x.f; else ans[x.f]=ans[x.s]=x.s; } REP1(i,n) cout<<ans[i]<<' '; }

Compilation message (stderr)

circle_selection.cpp:10: warning: ignoring '#pragma target ' [-Wunknown-pragmas]
   10 | #pragma target("avx3")
      |
#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...