#include <bits/stdc++.h>
using namespace std;
const int MN = 100005, inf = 1000000005, mod = 1000000007;
const long long INF = 1000000000000000005LL;
const long double eps = (long double)1e-10;
long long det(pair<int, int> x, pair<int, int> y) {
  return 1LL * x.first * y.second - 1LL * x.second * y.first;
}
long long det_pts(pair<int, int> x, pair<int, int> y, pair<int, int> z) {
  y.first -= x.first;
  y.second -= x.second;
  z.first -= x.first;
  z.second -= x.second;
  return det(y, z);
}
long double detf(pair<long double, long double> x,
                 pair<long double, long double> y) {
  return x.first * y.second - x.second * y.first;
}
namespace hull {
vector<pair<int, int> > half_oto(vector<pair<int, int> >& P) {
  vector<pair<int, int> > H;
  for (auto p : P) {
    while (H.size() > 1 && det_pts(H[H.size() - 2], H.back(), p) >= 0LL)
      H.pop_back();
    H.push_back(p);
  }
  return H;
}
vector<pair<int, int> > oto(vector<pair<int, int> > P) {
  vector<pair<int, int> > L, U, ret;
  sort((P).begin(), (P).end());
  U = half_oto(P);
  reverse((P).begin(), (P).end());
  L = half_oto(P);
  int su = U.size(), sl = L.size();
  for (int i = 0; i < su; ++i) ret.push_back(U[i]);
  for (int i = 1; i < sl - 1; ++i) ret.push_back(L[i]);
  return ret;
}
};  // namespace hull
pair<long double, long double> daj(pair<long double, long double> a,
                                   pair<long double, long double> b,
                                   long double alfa) {
  return {a.first * alfa + b.first * (1.0 - alfa),
          a.second * alfa + b.second * (1.0 - alfa)};
}
long double P, Q;
long double wyn(pair<long double, long double> p) {
  if (min(p.first, p.second) < eps) return (long double)INF;
  return max(P / p.first, Q / p.second);
}
long double tern(pair<int, int> a, pair<int, int> b) {
  pair<long double, long double> af = {(long double)a.first,
                                       (long double)a.second};
  pair<long double, long double> bf = {(long double)b.first,
                                       (long double)b.second};
  long double zd = 0.0, zg = 1.0;
  for (int i = 1; i <= 60; ++i) {
    long double one_th = (zg - zd) / 3.0, a1 = zd + one_th, a2 = zg - one_th;
    pair<long double, long double> l = daj(af, bf, a1), r = daj(af, bf, a2);
    if (wyn(l) > wyn(r))
      zd = a1;
    else
      zg = a2;
  }
  long double alfa = (zd + zg) / 2.0;
  return wyn(daj(af, bf, alfa));
}
int main() {
  int n, p, q;
  scanf("%d%d%d", &n, &p, &q);
  P = p, Q = q;
  vector<pair<int, int> > pts;
  for (int i = 1; i <= n; ++i) {
    int a, b;
    scanf("%d%d", &a, &b);
    pair<int, int> p = {a, b};
    pts.push_back(p);
    p = {a, 0};
    pts.push_back(p);
    p = {0, b};
    pts.push_back(p);
  }
  pts = hull::oto(pts);
  int s = pts.size();
  long double ans = (long double)INF;
  for (int i = 1; i < s; ++i) {
    auto cur_wyn = tern(pts[i - 1], pts[i]);
    ans = min(ans, cur_wyn);
  }
  printf("%.9Lf", ans);
}
