#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100009;
int N, tot;
double p0, q0;
pair<double, double> p[MAXN], Queue[MAXN];
double Cross(pair<double, double> _p, pair<double, double> _q1,
             pair<double, double> _q2) {
  pair<double, double> _a =
      make_pair(_q1.first - _p.first, _q1.second - _p.second);
  pair<double, double> _b =
      make_pair(_q2.first - _p.first, _q2.second - _p.second);
  return _a.first * _b.second - _a.second * _b.first;
}
pair<double, double> GetLineIntersection(pair<double, double> P,
                                         pair<double, double> v,
                                         pair<double, double> Q,
                                         pair<double, double> w) {
  pair<double, double> u = make_pair(P.first - Q.first, P.second - Q.second);
  double t1 = Cross(make_pair(0, 0), w, u) / Cross(make_pair(0, 0), v, w);
  return make_pair(P.first + v.first * t1, P.second + v.second * t1);
}
pair<double, double> Intersection(pair<double, double> _p1,
                                  pair<double, double> _p2,
                                  pair<double, double> _q1,
                                  pair<double, double> _q2) {
  pair<double, double> v =
      make_pair(_p2.first - _p1.first, _p2.second - _p1.second);
  pair<double, double> w =
      make_pair(_q2.first - _q1.first, _q2.second - _q1.second);
  return GetLineIntersection(_p1, v, _q1, w);
}
void Init() {
  scanf("%d%lf%lf", &N, &p0, &q0);
  for (int i = 1; i <= N; i++) scanf("%lf%lfd", &p[i].first, &p[i].second);
  sort(p + 1, p + N + 1);
  Queue[tot = 1] = make_pair(0, 0);
  for (int i = 1; i <= N; i++) {
    while (tot >= 2) {
      if (Cross(Queue[tot - 1], Queue[tot], p[i]) >= 0)
        tot--;
      else
        break;
    }
    Queue[++tot] = p[i];
  }
}
void Solve() {
  double Ans = (p0 > q0 ? p0 : q0);
  for (int i = 1; i <= N; i++)
    if (fmax(p0 / p[i].first, q0 / p[i].second) < Ans)
      Ans = fmax(p0 / p[i].first, q0 / p[i].second);
  for (int i = 2; i <= tot; i++)
    if (Cross(make_pair(0, 0), Queue[i], make_pair(p0, q0)) >= 0 &&
        Cross(make_pair(0, 0), Queue[i - 1], make_pair(p0, q0)) <= 0) {
      pair<double, double> its = Intersection(
          Queue[i - 1], Queue[i], make_pair(0, 0), make_pair(p0, q0));
      if (p0 / its.first < Ans) Ans = p0 / its.first;
    }
  printf("%.15f\n", Ans);
}
int main() {
  Init();
  Solve();
}
