제출 #683583

#제출 시각아이디문제언어결과실행 시간메모리
683583NONTACBalloons (CEOI11_bal)C++11
10 / 100
306 ms8064 KiB
#include <bits/stdc++.h>
using namespace std;

typedef pair<long double, long double> ll;
const int MAX_N = 200000;

int n;
long double x[MAX_N + 1], r[MAX_N + 1];
long double r_al[MAX_N + 1];
stack<ll> s;

long double expected_val(long double x1, long double r1, long double x2)
{
    return (x1 - x2) * (x1 - x2) / (4.0 * r1);
}

int main()
{
    //freopen("test.in","r",stdin);
    //freopen("test.out","w",stdout);

    cin>>n;

    for(int i = 0; i < n; i++){
        cin>>x[i]>>r[i];
    }

    for(int i = 0; i < n; i++){
        long double tmp = r[i];
        while(!s.empty() && s.top().second <= r[i]){
            tmp = min(tmp, expected_val(s.top().first, s.top().second, x[i]));
            s.pop();
        }

        if(!s.empty()) tmp = min(tmp, expected_val(s.top().first, s.top().second, x[i]));
        s.push(ll(x[i], tmp));
        printf("%.3Lf\n", tmp);
    }


    return 0;
}
#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...