#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3fffffff;
const int SINF = 0x7fffffff;
const long long LINF = 0x3fffffffffffffff;
const long long SLINF = 0x7fffffffffffffff;
const long double DINF = pow(2, 64);
const int MAXN = 100007;
const long double EPS = 1e-11;
struct mT {
  int x, y, vx, vy;
} mc[MAXN];
int n;
int xl, yl, xr, yr;
void init();
void input();
void work();
pair<long double, long double> gett(mT x);
pair<long double, long double> gett(int x, int l, int r, int v);
int main() {
  init();
  input();
  work();
}
void init() { ios::sync_with_stdio(false); }
void input() {
  scanf("%d", &n);
  scanf("%d%d%d%d", &xl, &yl, &xr, &yr);
  for (int i = 1; i <= n; ++i)
    scanf("%d%d%d%d", &mc[i].x, &mc[i].y, &mc[i].vx, &mc[i].vy);
}
void work() {
  pair<long double, long double> nr;
  long double l = 0, r = DINF;
  for (int i = 1; i <= n; ++i) {
    nr = gett(mc[i]);
    l = (((l) > (nr.first)) ? (l) : (nr.first)),
    r = (((r) < (nr.second)) ? (r) : (nr.second));
  }
  if (r - l < EPS)
    cout << -1 << endl;
  else
    cout << setprecision(9) << fixed << l << endl;
}
pair<long double, long double> gett(mT x) {
  pair<long double, long double> r1 = gett(x.x, xl, xr, x.vx),
                                 r2 = gett(x.y, yl, yr, x.vy);
  return make_pair((((r1.first) > (r2.first)) ? (r1.first) : (r2.first)),
                   (((r1.second) < (r2.second)) ? (r1.second) : (r2.second)));
}
pair<long double, long double> gett(int x, int l, int r, int v) {
  if (!v)
    return (x > l && x < r) ? make_pair(-DINF, DINF) : make_pair(DINF, -DINF);
  long double nl = static_cast<long double>(l - x) / v,
              nr = static_cast<long double>(r - x) / v;
  return make_pair((((nl) < (nr)) ? (nl) : (nr)),
                   (((nl) > (nr)) ? (nl) : (nr)));
}
