#include <bits/stdc++.h>
using namespace std;
long double calcRadius(const pair<long double, long double> &a, const long double bx) {
const long double dx = a.first-bx;
return dx*dx/(4*a.second);
}
int main() {
int n;
cin >> n;
stack<pair<long double, long double>> stack;
vector<long double> finalRadius(n);
for (int i = 0; i<n; i++) {
long double x, r;
cin >> x >> r;
long double maxR = r;
while (!stack.empty()) {
pair<long double, long double> last = stack.top();
long double radius = calcRadius(last, x);
maxR = min(maxR, radius);
if (maxR >= last.second) {
stack.pop();
continue;
}
break;
}
stack.emplace(x, maxR);
finalRadius[i] = maxR;
}
cout << fixed << setprecision(3);
for (int i = 0; i<n; i++) {
cout << finalRadius[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... |