#include <bits/stdc++.h>
using namespace std;
/*
 We use long double everywhere to ensure enough precision.
*/
bool check(long double r1, long double r2, long double x1, long double x2)
{
    long double y = (r1 - r2);
    long double x = (x1 - x2);
    long double rr = (r1 + r2);
    // Check if circles intersect: rr*rr < x*x + y*y
    return (rr * rr) < (x * x + y * y);
}
long double get_ht(long double x1, long double x2, long double r1)
{
    // Height formula
    return ((x1 - x2) * (x1 - x2)) / (4.0L * r1);
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin >> n;
    
    vector<pair<long double,long double>> arr(n);
    for(int i = 0; i < n; i++){
        cin >> arr[i].first >> arr[i].second;
    }
    
    vector<long double> res(n, 0.0L);
    vector<pair<long double,long double>> st;
    
    res[0] = arr[0].second;
    st.push_back({arr[0].first, arr[0].second});
    
    for(int i = 1; i < n; i++){
        long double cur = arr[i].second;
        while(!st.empty() && !check(st.back().second, cur, st.back().first, arr[i].first)){
            long double ht = get_ht(st.back().first, arr[i].first, st.back().second);
            cur = min(cur, ht);
            st.pop_back();
        }
        res[i] = cur;
        st.push_back({arr[i].first, cur});
    }
    
    cout << fixed << setprecision(3);
    for(int i = 0; i < n; i++){
        cout << res[i] << "\n";
    }
    return 0;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |