Submission #1266814

#TimeUsernameProblemLanguageResultExecution timeMemory
1266814datluong_04Balloons (CEOI11_bal)C++20
100 / 100
87 ms14464 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define FOR(i , a , b) for(int i = a ; i <= b; i++)
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define maxn 200005

struct Point{
    ll x , r;
};

Point a[maxn];

long double x[maxn] , radi[maxn] , R[maxn];

int main(){
    FAST;
    int n;
    cin >> n;
    FOR(i , 1 , n){
        cin >> a[i].x >> a[i].r;
        x[i] = (long double)a[i].x;
        radi[i] = (long double) a[i].r;
    }

    stack<int> st;
    FOR(i , 1 , n){
        long double Ri = radi[i];
        while(!st.empty()){
            int j = st.top();
            long double dx = x[i] - x[j];
            long double cand = dx * dx / (4.0L * R[j]);
            if(cand < Ri) Ri = cand;
            if(Ri > R[j]) st.pop();
            else break;
        }
        R[i] = Ri;
        st.push(i);
    }
    FOR(i , 1 , n) cout << fixed << (long double) R[i] << setprecision(3) << "\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...