#include <bits/stdc++.h>
double min(double a, double b) { return a < b ? a : b; }
double max(double a, double b) { return a > b ? a : b; }
int xx[100000], yy[100000], o;
long long cross2(int x1, int y1, int x2, int y2) {
  return (long long)x1 * y2 - (long long)x2 * y1;
}
long long cross(int i, int j, int k) {
  return cross2(xx[j] - xx[i], yy[j] - yy[i], xx[k] - xx[i], yy[k] - yy[i]);
}
int compare(const void *a, const void *b) {
  int i = *(int *)a;
  int j = *(int *)b;
  long long c = cross(o, i, j);
  return c == 0  ? (xx[i] != xx[j] ? xx[i] - xx[j] : yy[i] - yy[j])
         : c < 0 ? -1
                 : 1;
}
int main() {
  static int ii[100000];
  int n, p, q, i, cnt;
  double ans;
  scanf("%d%d%d", &n, &p, &q);
  for (i = 0; i < n; i++) {
    scanf("%d%d", &xx[i], &yy[i]);
    ii[i] = i;
  }
  o = 0;
  for (i = 1; i < n; i++)
    if (xx[o] > xx[i] || xx[o] == xx[i] && yy[o] > yy[i]) o = i;
  ii[0] = o, ii[o] = 0;
  qsort(ii + 1, n - 1, sizeof *ii, compare);
  cnt = 1;
  for (i = 1; i < n; i++)
    if (xx[ii[i]] != xx[ii[i - 1]] || yy[ii[i]] != yy[ii[i - 1]]) {
      int i_ = ii[i];
      while (cnt >= 2 && cross(ii[cnt - 2], ii[cnt - 1], i_) >= 0) cnt--;
      ii[cnt++] = i_;
    }
  n = cnt;
  ans = 1e7;
  if (n >= 2)
    for (i = 0; i < n; i++) {
      int i_ = ii[i], j_ = ii[(i + 1) % n];
      double c = cross2(p, q, xx[i_], yy[i_]);
      double d = cross2(p, q, xx[j_], yy[j_]);
      if (c > 0 && d < 0 || c < 0 && d > 0) {
        ans = min(ans,
                  (double)cross2(p, q, xx[j_] - xx[i_], yy[j_] - yy[i_]) /
                      cross2(xx[i_], yy[i_], xx[j_] - xx[i_], yy[j_] - yy[i_]));
      }
    }
  for (i = 0; i < n; i++)
    ans = min(ans, max((double)p / xx[ii[i]], (double)q / yy[ii[i]]));
  printf("%.7f\n", ans);
  return 0;
}
