#include <bits/stdc++.h>
using namespace std;
int n;
vector<pair<int, int> > arr;
vector<long double> b;
bool Can() {
  bool ok = false;
  long double ans = 0;
  for (int i = 0; i < n; i++)
    if (arr[i].second > 0) {
      if (ok == false) ans = b[i];
      ok = true;
      ans = max(ans, b[i]);
    } else {
      if (ok == false) continue;
      if (b[i] < ans) return true;
    }
  return false;
}
int main() {
  cin >> n;
  arr.resize(n);
  bool x = false, y = false;
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &arr[i].first, &arr[i].second);
    if (arr[i].second < 0)
      x = true;
    else
      y = true;
  }
  if (x == false || y == false) {
    cout << -1 << endl;
    return 0;
  }
  int z = -1e9;
  for (int i = 0; i < n; i++)
    if (arr[i].second < 0) z = arr[i].first;
  bool ok = false;
  for (int i = 0; i < n; i++)
    if (arr[i].second > 0 && arr[i].first < z) {
      ok = true;
      break;
    }
  if (!ok) {
    cout << -1 << endl;
    return 0;
  }
  long double l = 0, r = 2 * 1e9;
  for (int i = 0; i < 200; i++) {
    long double m = (l + r) / 2;
    b.clear();
    for (int j = 0; j < n; j++) b.push_back(m * arr[j].second + arr[j].first);
    if (Can())
      r = m;
    else
      l = m;
  }
  if (l > 1.5 * 1e9) throw(0);
  printf("%.12lf\n", l);
  return 0;
}
