#include <bits/stdc++.h>
using namespace std;
double mx_radius(pair<double, double> prev, double bx){
return (double) (bx - prev.first) * (bx - prev.first) / (4.000 * prev.second);
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(nullptr); cout.tie(nullptr);
int n;
cin >> n;
vector<double> x(n + 1), r(n + 1);
stack<pair<double, double>> stk;
cout << fixed << setprecision(3);
for(int i = 1; i <= n; ++i){
cin >> x[i] >> r[i];
}
for(int i = 1; i <= n; ++i){
double mxr = r[i];
while((int) stk.size()){
auto lst = stk.top();
double lstr = mx_radius(lst, x[i]);
mxr = min(mxr, lstr);
if(mxr >= lst.second){
stk.pop();
}else{
break;
}
}
stk.push({x[i], mxr});
cout << mxr << "\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... |