#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int res = 0;
  int neg;
  while (true) {
    char ch = getchar();
    if (ch >= '0' && ch <= '9' || ch == '-') {
      if (ch == '-')
        neg = -1;
      else
        neg = 1, res = ch - '0';
      break;
    }
  }
  while (true) {
    char ch = getchar();
    if (ch >= '0' && ch <= '9')
      res *= 10, res += ch - '0';
    else
      break;
  }
  return res * neg;
}
const int maxn = 500020;
const int maxk = 100020;
const int maxx = 100000;
const int maxm = 1000020;
const int MOd = 1e7;
int a;
pair<double, double> ar[maxn];
bool f(double t) {
  double maxi = -1e12, mini = 1e12;
  for (int i = 1; i <= a; i++) {
    if (ar[i].second > 0)
      maxi = max(maxi, ((double)ar[i].first + (double)ar[i].second * t));
    else {
      if (ar[i].first + ar[i].second * t < maxi) return true;
    }
  }
  return false;
}
int main() {
  scanf("%d", &a);
  double maxi = -1e12, mini = 1e12;
  for (int i = 1; i <= a; i++) {
    scanf("%lf %lf", &ar[i].first, &ar[i].second);
    if (ar[i].second < 0)
      maxi = max(maxi, (ar[i].first));
    else
      mini = min(mini, (ar[i].first));
  }
  sort(ar + 1, ar + 1 + a);
  if (mini > maxi) {
    printf("-1\n");
    return 0;
  }
  double l = 0.0, r = 1e12;
  for (int i = 1; i < 100; i++) {
    double m = (double)(l + r) / 2;
    if (f(m))
      r = m;
    else
      l = m;
  }
  if (l > 1e10)
    printf("-1\n");
  else
    printf("%.20lf\n", (double)l);
  return 0;
}
