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