#include <bits/stdc++.h>
// #define int long long
using namespace std;
int x[200005],r[200005];
long double ans[200005];
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n; cin >> n;
for(int i=1;i<=n;i++) cin>> x[i] >> r[i];
// stack <int> st;
set<pair <long double, int > > st;
ans[1]=r[1]*1.0;
st.insert({1.0*(r[1]+x[1]),1});
for(int i=2;i<=n;i++){
long double cur=r[i]*1.0;
vector <pair <long double , int > > xet;
int dd=50;
while(dd--&&!st.empty()){
xet.push_back(*st.rbegin());
st.erase(xet.back());
}
for(auto k:xet){
long double xj=x[k.second],rj=ans[k.second];
long double ri=1.0*(x[i]-xj)*(x[i]-xj)/(4.0*rj);
cur=min(cur,ri);
}
ans[i]=cur;
st.insert({1.0*(ans[i]+x[i]),i});
for(auto j:xet) st.insert(j);
}
for(int i=1;i<=n;i++) cout << fixed << setprecision(3) << ans[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... |