# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
872236 | 2023-11-12T14:49:18 Z | imarn | Balloons (CEOI11_bal) | C++14 | 185 ms | 5132 KB |
#include<bits/stdc++.h> #define pb push_back #define f first #define ll long double #define s second #define vll vector<ll> #define vi vector<int> #define sz(x) (int)x.size() using namespace std; ll inf=1e18; bool qr; struct line { mutable ll m,p,c; line(ll p) : m(0),c(inf),p(p){}; line(ll m,ll c) : m(m),c(c),p(0){}; bool operator<(const line &o)const{return qr? p<o.p:m>o.m;} }; struct chtr: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(ll m,ll 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)); } ll get(ll x){ if(empty())return inf; qr=1;auto q=lower_bound(line(x));qr=0; return q->m*x+q->c; } }cht; int main(){ ios_base::sync_with_stdio(0);cin.tie(0); int n;cin>>n; ll a[n]; ll 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;ll 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"; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 348 KB | 10 numbers |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 344 KB | 2 numbers |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 344 KB | 505 numbers |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 344 KB | 2000 numbers |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 18 ms | 856 KB | 20000 numbers |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 46 ms | 1616 KB | 50000 numbers |
2 | Correct | 43 ms | 1528 KB | 49912 numbers |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 97 ms | 2800 KB | 100000 numbers |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 109 ms | 3136 KB | 115362 numbers |
2 | Correct | 102 ms | 2896 KB | 119971 numbers |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 146 ms | 4448 KB | 154271 numbers |
2 | Correct | 166 ms | 4764 KB | 200000 numbers |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 185 ms | 5132 KB | 200000 numbers |
2 | Correct | 169 ms | 4640 KB | 199945 numbers |