#include<bits/stdc++.h>
#define ll long long
#define pii pair<int,double>
#define pdd pair<double,double>
#define tiii tuple<int,int,int>
using namespace std;
double eps = 1e-6;
double dist(pdd a, pdd b){
double dx = a.first-b.first;
double dy = a.second-b.second;
return sqrt((dx*dx)+(dy*dy));
}
double get(pii bal, int p){
// double l = 0;
// double r = 1e9;
// pdd point = {bal.first, bal.second};
// double ma = 0;
// while(r-l >= eps){
// double mid = (r+l)/2;
// pdd po = {p,mid};
// double d = dist(point, po);
// if(d >= mid+bal.second){
// ma = max(ma, mid);
// l = mid+eps;
// }else{
// r = mid-eps;
// }
// }
// return l;
double top = (bal.first-p)*(bal.first-p);
return (top/(4.0*bal.second));
}
int main(){
int n;
cin >> n;
vector<int> arr(n);
vector<double> constr(n);
for(int i = 0; i < n; i++){
cin >> arr[i] >> constr[i];
}
cout << fixed << setprecision(3);
vector<pii> S;
for(int i = 0; i < n; i++){
double val = 1e9;
for(auto v : S){
val = min(val, get(v, arr[i]));
}
val = min(val, constr[i]);
while(S.size() && S.back().second <= val){
S.pop_back();
}
S.push_back({arr[i],val});
cout << val << "\n";
}
}
| # | 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... |