#include <bits/stdc++.h>
using namespace std;
long n, p1 = -1, p2 = 500000, p[500001][2];
bool can(double mid) {
  double r1 = p[p2][0], l1 = p[p1][0];
  long w;
  for (long i = p2; i <= p1; i++) {
    if (p[i][1] > 0) {
      double ax = p[i][0] + p[i][1] * mid;
      if (ax > r1) {
        r1 = ax;
        w = i;
        l1 = p[p1][0];
      }
    } else {
      double ax = p[i][0] + p[i][1] * mid;
      if (ax < l1) l1 = ax;
    }
    if (l1 <= r1) {
      p2 = w;
      return true;
    }
  }
  return false;
}
int main() {
  scanf("%ld", &n);
  for (int i = 0; i < n; i++) scanf("%ld%ld", &p[i][0], &p[i][1]);
  for (long i = 0; i < n; i++) {
    if (p[i][1] > 0) {
      p2 = i;
      break;
    }
  }
  for (long j = n - 1; j >= 0; j--) {
    if (p[j][1] < 0) {
      p1 = j;
      break;
    }
  }
  if (p2 > p1) {
    cout << "-1";
    return 0;
  }
  double an = 0;
  double l = 0.0, h = 1e9, m = 0.0;
  for (int i = 0; i < 70; i++) {
    m = (l + h) / 2.0;
    if (can(m)) {
      an = m;
      h = m;
    } else
      l = m;
  }
  printf("%.10lf", an);
}
