#include "bits/stdc++.h"
#include<unordered_map>
#include<unordered_set>
#pragma warning(disable:4996)
using namespace std;
using ld = long double;
const ld eps = 1e-9;

//// < "d:\d_download\visual studio 2015\projects\programing_contest_c++\debug\a.txt" > "d:\d_download\visual studio 2015\projects\programing_contest_c++\debug\b.txt"

bool check(vector<pair<ld, ld>>&ps, ld dis) {
	map<ld, int>mp;
	for (int i = 0; i < ps.size(); ++i) {
		auto p(ps[i]);
		ld d = sqrt(p.second*p.second - dis*dis);
		ld l(p.first - d);
		ld r(p.first + d);
		mp[l]++;
		mp[r]--;
	}
	int num = 0;
	bool flag = false;
	for (auto it = mp.begin(); it != mp.end(); ++it) {
		auto m(*it);
		num += m.second;
		if (num == ps.size())flag = true;
	}
	return flag;
}

int main() {
	int N; cin >> N;
	vector<pair<ld, ld>>ps;
	ld amin = 0;
	ld amax = 1e18;
	for (int i = 0; i < N; ++i) {
		int a, b; cin >> a >> b;
		ps.emplace_back(a, b);
		amax = min(amax, ld(b));
	}

	amax -= 1e-9;
	int kk =30;
	while (kk--) {
		ld amid((amin + amax) / 2);
		if (check(ps, amid)) {
			amin = amid;
		}
		else {
			amax = amid;
		}
	}
	cout << setprecision(10) << fixed << amin << endl;
	

	return 0;
}