제출 #1148853

#제출 시각아이디문제언어결과실행 시간메모리
1148853LilPlutonBalloons (CEOI11_bal)C++20
20 / 100
2096 ms7568 KiB
#include <bits/stdc++.h>
using namespace std;

#define ld long double
#define ll long long
#define eb emplace_back
const int inf = 1e9;

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    auto check = [&](int x1, ld y1, int x2, ld y2) -> bool {
        ld dist = sqrtl((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
        return dist <= (y1 + y2);
    };

    ld eps = 1e-9;
    int n;
    cin >> n;
    vector<int> x(n);
    vector<ld> rr(n), ans(n);
    
    map<int, ld> active;

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

        ld mn = rr[i];
        auto it = active.lower_bound(x[i]); 
        while (it != active.begin()) {
            auto left = prev(it);
            ld l = 0.0, r = rr[i], best = r;
            while (r - l > eps) {
                ld mid = (l + r) / 2;
                if (!check(left->first, left->second, x[i], mid)) {
                    best = mid;
                    l = mid;
                } else {
                    r = mid;
                }
            }
            mn = min(mn, best);
            if(mn == rr[i]){
                break;
            }
            it--;
        }

        ans[i] = mn;
        active[x[i]] = ans[i]; 
    }

    cout << fixed << setprecision(3);
    for (int i = 0; i < n; ++i) {
        cout << ans[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...