제출 #1183121

#제출 시각아이디문제언어결과실행 시간메모리
1183121aminjon__Balloons (CEOI11_bal)C++17
10 / 100
177 ms9524 KiB
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define endl '\n'
typedef unsigned int uint;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
using namespace std;

const ld Eps = 1e-5;

ld dist(ld x1, ld y1, ld x2, ld y2)
{
    return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}

void solve()
{
    ll n;
    cin >> n;

    vector<ll> x(n + 1);
    vector<ll> r(n + 1);
    ll last = -1;

    vector<ld> ans(n + 1);

    set<pair<ld, ll>> s;
    for (int i = 1; i <= n; i++)
    {
        cin >> x[i] >> r[i];

        while (!s.empty() && s.begin()->first < x[i])
        {
            s.erase(s.begin());
        }
        if (s.empty())
        {
            ans[i] = r[i];
            s.insert({(ld)x[i] + 10.5*r[i] , i});
            continue;
        }
        ll j = s.begin()->second;
        ld L = 0, R = r[i];
        while (L + Eps < R)
        {
            ld mid = (L + R) / 2.0;
            bool ok = 1;

            if (dist(x[j], ans[j], x[i], mid) + Eps > ans[j] + mid)
            {
                // L = mid;
            }
            else
            {
                ok = 0;
            }

            if (ok)
            {
                L = mid;
            }
            else
            {
                R = mid;
            }
        }
        ans[i] = L;
    }
    cout << fixed << setprecision(10);
    for (int i = 1; i <= n; i++)
    {
        cout << ans[i] << endl;
    }
}
signed main()
{
    ios_base::sync_with_stdio(NULL);
    cin.tie(NULL);
    cout.tie(NULL);
    ll t = 1;
    // cin >> t;
    while (t--)
    {
        solve();
    }
    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...