#include<iostream>
#include<algorithm>
#include<iomanip>
#include<stack>
#include<vector>
using namespace std;
struct Ballon{
long double x;
long double r;
};
void Input(int& n, vector<Ballon>& ballons){
cin >> n;
ballons.resize(n+1);
for(int i=0;i<n;i++){
cin >> ballons[i].x >> ballons[i].r;
}
}
double calculate_r2(long double x1, long double x2, long double r){
return (x1-x2)*(x1-x2)/(4.0*r);
}
void processing(int n, vector<Ballon>& ballons){
stack<pair<long double, long double>> s;
for(int i=0;i<n;i++){
long double current_r = ballons[i].r;
while(!s.empty()){
pair<long double, long double> last_circus = s.top();
long double limit = calculate_r2(last_circus.first, ballons[i].x, last_circus.second);
current_r = min(ballons[i].r, limit);
if(current_r>=last_circus.second){
s.pop();
current_r = ballons[i].r;
continue;
}
else{
break;
}
}
s.push({ballons[i].x, current_r});
ballons[i].r = current_r;
}
for(int i=0;i<n;i++){
cout << fixed << setprecision(3) << ballons[i].r << "\n";
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
vector<Ballon> ballons;
Input(n, ballons);
processing(n, ballons);
return 0;
}