#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()
{
// #ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
// #endif
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<pii> 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 << setprecision(4);
for (int i = 0; i < n; ++i)
{
cout << balloon[i].r << endl;
}
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... |