#include <bits/stdc++.h>
using namespace std;
const int max_n = 500001;
int x[max_n], v[max_n];
int n;
double pos[max_n];
inline void sim(double time) {
  for (long long _n((n)-1), i(0); i <= _n; i++) pos[i] = x[i] + v[i] * time;
}
double d1[max_n], d2[max_n];
inline bool check() {
  d1[0] = -1000000000000000000000000.0;
  if (v[0] > 0) d1[0] = pos[0];
  d2[n - 1] = +1000000000000000000000000.0;
  if (v[n - 1] < 0) d2[n - 1] = pos[n - 1];
  for (int i = 1; i < n; i++) {
    d1[i] = d1[i - 1];
    if (v[i] > 0) d1[i] = max(d1[i], pos[i]);
  }
  for (int i = n - 2; i >= 0; i--) {
    d2[i] = d2[i + 1];
    if (v[i] < 0) d2[i] = min(d2[i], pos[i]);
  }
  for (long long _n((n)-1), i(0); i <= _n; i++)
    if (1e-9 < d1[i] - d2[i]) return true;
  return false;
}
int main() {
  scanf("%d", &n);
  for (long long _n((n)-1), i(0); i <= _n; i++) scanf("%d%d", &x[i], &v[i]);
  double l = 0, r = 1e10;
  for (long long _n((100) - 1), i(0); i <= _n; i++) {
    double tt = (l + r) / 2;
    sim(tt);
    if (check())
      r = tt;
    else
      l = tt;
  }
  if (r > 2 * 1e9)
    cout << -1 << endl;
  else
    printf("%.9f\n", l);
  return 0;
}
