#include <bits/stdc++.h>
using namespace std;
int n, p, q;
pair<int, int> pro[100010];
long long cross(int x1, int y1, int x2, int y2) {
  return x1 * (long long)y2 - x2 * (long long)y1;
}
double cross2(double x1, double y1, double x2, double y2) {
  return x1 * y2 - x2 * y1;
}
bool check(pair<int, int> c, pair<int, int> b, pair<int, int> a) {
  return cross(b.first - a.first, b.second - a.second, c.first - b.first,
               c.second - b.second) >= 0;
}
pair<int, int> st[100010];
int tp = -1;
int main() {
  scanf("%d%d%d", &n, &p, &q);
  int maxa = 0, maxb = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &pro[i].first, &pro[i].second);
    maxa = max(maxa, pro[i].first);
    maxb = max(maxb, pro[i].second);
  }
  sort(pro + 1, pro + n + 1);
  st[++tp] = make_pair(0, maxb);
  for (int i = 1; i <= n; i++) {
    while (tp > 0 && check(pro[i], st[tp], st[tp - 1])) tp--;
    st[++tp] = pro[i];
  }
  st[++tp] = make_pair(maxa, 0);
  int line;
  for (int i = 0; i < tp; i++) {
    if ((atan2(q, p) - atan2(st[i + 1].second, st[i + 1].first) >= -1e-9) &&
        (atan2(st[i].second, st[i].first) - atan2(q, p) >= -1e-9))
      line = i;
  }
  double lo = 0, hi = 1e6;
  while (lo < hi - 1e-9) {
    double mi = (lo + hi) / 2;
    if ((0 - cross2(p / mi - st[line].first, q / mi - st[line].second,
                    p / mi - st[line + 1].first,
                    q / mi - st[line + 1].second) >=
         -1e-9))
      hi = mi;
    else
      lo = mi;
  }
  printf("%.10f\n", lo);
  return 0;
}
