#include "bits/stdc++.h"
using namespace std;
using str=string;
using ll = int64_t;
using ull = uint64_t;
using ld = long double;
using vi=vector<int>;
using vll=vector<ll>;
using vb=vector<bool>;
using pi=pair<int,int>;
using vpi=vector<pi>;
#define m1(x) template<class T, class... U> void x(T&& a, U&&... b)
#define m2(x) (int[]){(x forward<U>(b),0)...}
m1(pr) { cout << forward<T>(a); m2(cout << " " <<); cout << "\n"; }
m1(re) { cin >> forward<T>(a); m2(cin >>); }
template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; }
template<typename T> bool chmax(T &v, T nv) {if (nv>v) {v=nv; return 1;} return 0;}
template<typename T> bool chmin(T &v, T nv) {if (nv<v) {v=nv; return 1;} return 0;}
const int INF=1e9+7;
#define pb push_back
#define fs first
#define sc second
#ifdef DEBUG
#define dbg(x) x
#else
#define dbg(x) 0;
#endif
int du[][2] = {{1,0},{-1,0},{0,1},{0,-1}};
long double max_r(long double x_t, long double y_t, long double x_c) {
return pow(abs(x_c - x_t), 2) / (4 * y_t);
}
void solve() {
int n;
re(n);
vi X(n), R(n);
stack<int> st;
vector<long double> actual(n);
for(int i=0;i<n;i++) {
re(X[i], R[i]);
long double r = R[i];
while(!st.empty()) {
// consider the balloon can touch each other
// if cannot -> pop
// if can -> break
long double posx_top = X[st.top()];
long double posy_top = actual[st.top()];
long double posx_i = X[i];
chmin(r, max_r(posx_top, posy_top, posx_i));
if (r >= actual[st.top()]) {
st.pop();
} else break;
}
actual[i]=r;
st.push(i);
}
cout << fixed << setprecision(3);
for(auto &d:actual) pr(d);
}
int main() {
cin.tie(0)->sync_with_stdio(0);
// cout << setprecision(20) << fixed;
solve();
}