#include <bits/stdc++.h>
using namespace std;
const int inf = INT_MAX;
int n;
struct node {
  long double x, y;
} a[100010];
bool check(long double xx) {
  long double l, r;
  l = -1e19, r = 1e19;
  for (int i = 0; i < n; ++i) {
    if (a[i].y >= xx * 2 || l > r) return false;
    l = max(l, a[i].x - sqrt(2 * a[i].y * xx - a[i].y * a[i].y));
    r = min(r, a[i].x + sqrt(2 * a[i].y * xx - a[i].y * a[i].y));
  }
  return l <= r;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) scanf("%lf%lf", &a[i].x, &a[i].y);
  for (int i = 0; i < n; ++i)
    if (a[i].y * a[n - 1].y < 0) {
      printf("-1");
      return 0;
    } else
      a[i].y = (a[i].y > 0) ? a[i].y : -a[i].y;
  long double l = 0, r = 1e19, mid;
  for (int i = 0; i <= 100; i++) {
    mid = (l + r) / 2;
    if (check(mid))
      r = mid;
    else
      l = mid;
  }
  printf("%.10Lf", mid);
}
