Submission #872510

#TimeUsernameProblemLanguageResultExecution timeMemory
872510imarnBalloons (CEOI11_bal)C++14
100 / 100
177 ms5128 KiB
#include<bits/stdc++.h> #define pb push_back #define f first #define ld long double #define s second #define vll vector<ll> #define vi vector<int> #define sz(x) (int)x.size() using namespace std; ld inf=1e18; bool qm; struct line { mutable ld m,c,p; line(ld p) : m(0),c(inf),p(p){}; line(ld m,ld c) : m(m),c(c),p(inf){}; bool operator<(const line &o)const{return qm?p<o.p:m>o.m;} }; struct convexhull:multiset<line>{ bool isect(iterator x,iterator y){ if(y==end())return x->p=inf,0; if(x->m==y->m)x->p=x->c<=y->c?inf:-inf; else x->p=(x->c-y->c)/(y->m-x->m); return x->p>=y->p; } void add(ld m,ld c){ auto y=insert(line(m,c)),x=y,z=next(y); while(isect(y,z))z=erase(z); while(x!=begin()&&isect(--x,y))isect(x,erase(y)); while((y=x)!=begin()&&(--x)->p>=y->p)isect(x,erase(y)); } ld get(ld x){ if(empty())return inf; qm=1;auto u=lower_bound(line(x));qm=0; return u->m*x+u->c; } }cht; int main(){ ios_base::sync_with_stdio(0);cin.tie(0); int n;cin>>n; ld a[n]; ld x,r;cin>>x>>r;a[0]=r; cht.add(1.0/(2.0*sqrt(r)),-x/(2.0*sqrt(r))); for(int i=1;i<n;i++){ cin>>x>>r;ld y = cht.get(x); r = min(r,y*y);a[i]=r; cht.add(1.0/(2.0*sqrt(r)),-x/(2.0*sqrt(r))); } for(int i=0;i<n;i++)cout<<fixed<<setprecision(3)<<a[i]<<"\n"; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...