Submission #1217516

#TimeUsernameProblemLanguageResultExecution timeMemory
1217516henriiBalloons (CEOI11_bal)C++20
0 / 100
104 ms6680 KiB
#include <bits/stdc++.h>
using namespace std;

#define vi vector<int>
#define pii pair<int, int>
#define ll long long

struct Balloon
{
    long double x, r;
};

int main()
{
    int n;
    cin >> n;

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

    auto maxRadius = [&](int idx1, int idx2) -> long double
    {
        return (balloon[idx1].x - balloon[idx2].x) * (balloon[idx1].x - balloon[idx2].x) / (4.0 * balloon[idx1].r);
    };

    stack<pair<long double, int>> s;
    s.push({balloon[0].r, 0});
    for (int i = 1; i < n; ++i)
    {
        while (!s.empty() && maxRadius(s.top().second, i) > s.top().first)
            s.pop();

        balloon[i].r = min(balloon[i].r, maxRadius(s.top().second, i));
        s.push({balloon[i].r, i});
    }

    cout << fixed << setprecision(3);
    for (int i = 0; i < n; ++i)
    {
        cout << balloon[i].r << endl;
    }


    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...