#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;
}
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;
int l = 1; int r = S.size()-1;
while(l <= r){
int mid = (l+r+1)/2;
double v1 = get(S[mid], arr[i]);
double v2 = get(S[mid-1], arr[i]);
val = min({val, v1,v2});
if(v1-v2 < 0){
l = mid+1;
}else{
r = mid-1;
}
}
if(S.size()) val = min(val, get(S.back(),arr[i]));
if(S.size()) val = min(val, get(S.front(),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... |