#include<bits/stdc++.h>
using namespace std;
#define int long long
#define cantinue continue
double fan(double xi,double xj,double rj)
{
return (xi-xj)*(xi-xj)/(4*rj);
}
signed main()
{
int n;
cin>>n;
vector <double> x(n+1);
vector <double> r(n+1);
for(int i=1;i<=n;i++)cin>>x[i]>>r[i];
vector <double> rad(n+1);
vector <int> stk;
for(int i=1;i<=n;i++)
{
rad[i]=r[i];
int sz=stk.size()-1;
while(stk.size()>0 && rad[stk[sz]]<=min(rad[i],fan(x[i],x[stk[sz]],rad[stk[sz]])))
{
rad[i]=min(rad[i],(x[i]-x[stk[sz]])*(x[i]-x[stk[sz]])/(4*rad[stk[sz]]));
stk.pop_back();
sz--;
}
if(stk.size())
{
int sz=stk[stk.size()-1];
rad[i]=min(rad[i],(x[i]-x[sz])*(x[i]-x[sz])/(4*rad[sz]));
}
stk.push_back(i);
}
for(int i=1;i<=n;i++)cout<<fixed<<setprecision(3)<<rad[i]<<endl;
}
//§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§∞∞§
# | 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... |