#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);   }   