#include <bits/stdc++.h>
using namespace std;
int z;
long long n, i, j, k, a, b, x, v;
bool first;
double ll, rr, t, mn;
pair<long long, long long> A[500001], B[500001];
vector<long long> L[500001];
long long S[500001];
double X1[500001], X2[500001];
set<long long> SET;
int main() {
  scanf("%d", &z);
  n = z;
  for (i = 0; i < n; i++) {
    scanf("%d", &z);
    x = z;
    scanf("%d", &z);
    v = z;
    if (v > 0)
      A[a++] = make_pair(x, v);
    else
      B[b++] = make_pair(x, -v);
    if (!v) return 0;
    if (SET.find(x) != SET.end()) return 0;
    SET.insert(x);
  }
  if (!a || !b) {
    printf("-1\n");
    return 0;
  }
  sort(A, A + a);
  sort(B, B + b);
  for (i = a - 1, j = b - 1; i >= 0; i--)
    while (j >= 0 && B[j].first >= A[i].first) {
      L[i].push_back(j--);
      S[i]++;
    }
  if (j == b - 1)
    printf("-1\n");
  else {
    ll = 0;
    rr =
        (double)(B[b - 1].first - A[0].first) / (A[0].second + B[b - 1].second);
    if (A[0].second + B[b - 1].second <= 0) return 0;
    for (i = 0; i < 100; i++) {
      t = (ll + rr) / 2;
      for (j = 0; j < a; j++) X1[j] = A[j].first + A[j].second * t;
      for (j = 0; j < b; j++) X2[j] = B[j].first - B[j].second * t;
      for (j = a - 1, first = 0; j >= 0; j--) {
        for (k = 0; k < S[j]; k++)
          if (!first || X2[L[j][k]] < mn) {
            mn = X2[L[j][k]];
            first = 1;
          }
        if (first && mn <= X1[j]) break;
      }
      if (j >= 0)
        rr = t;
      else
        ll = t;
    }
    if (rr < 1e-10) return 0;
    printf("%.20lf\n", rr);
  }
  return 0;
}
