#include <bits/stdc++.h>
const double eps = 1e-8;
std::pair<double, double> *poi, *pab;
int sgn(double x) { return (x > eps) - (x < -eps); }
double cross(std::pair<double, double> p0, std::pair<double, double> p1,
             std::pair<double, double> p2) {
  std::pair<double, double> a =
      std::pair<double, double>(p1.first - p0.first, p1.second - p0.second);
  std::pair<double, double> b =
      std::pair<double, double>(p2.first - p0.first, p2.second - p0.second);
  return a.first * b.second - a.second * b.first;
}
double dis(std::pair<double, double> a, std::pair<double, double> b) {
  return std::sqrt(std::pow(a.first - b.first, 2) +
                   std::pow(a.second - b.second, 2));
}
bool cmp1(std::pair<double, double> a, std::pair<double, double> b) {
  if (!sgn(a.first - b.first)) return a.second < b.second;
  return a.first < b.first;
}
bool cmp2(std::pair<double, double> a, std::pair<double, double> b) {
  int t = sgn(cross(pab[0], a, b));
  if (t == 0) return sgn(dis(pab[0], a) - dis(pab[0], b)) < 0;
  return t > 0;
}
int main() {
  int n, p, q;
  scanf("%d%d%d", &n, &p, &q);
  pab = new std::pair<double, double>[n + 10];
  poi = new std::pair<double, double>[n + 10];
  for (int i = 0; i < n; i++) {
    scanf("%lf%lf", &pab[i].first, &pab[i].second);
  }
  sort(pab, pab + n, cmp1);
  sort(pab + 1, pab + n, cmp2);
  int chn = 0;
  for (int i = 0; i < n; i++) {
    while (chn > 2 && sgn(cross(poi[chn - 2], poi[chn - 1], pab[i])) <= 0)
      chn--;
    poi[chn++] = pab[i];
  }
  poi[chn++] = poi[0];
  double ans = 1e30;
  for (int i = 0; i < chn - 1; i++) {
    if (poi[i].first > 0 && poi[i].second > 0) {
      double tmp = (p / poi[i].first < q / poi[i].second) ? (q / poi[i].second)
                                                          : (p / poi[i].first);
      ans = (tmp < ans) ? (tmp) : (ans);
    }
    std::pair<double, double> ab = std::pair<double, double>(
        poi[i].first - poi[i + 1].first, poi[i].second - poi[i + 1].second);
    if (ab.first != 0) {
      double k = ab.second / ab.first, b = poi[i].second - poi[i].first * k;
      double b2 = q - p * k, d = b2 / b;
      double xl = (poi[i].first < poi[i + 1].first) ? (poi[i].first)
                                                    : (poi[i + 1].first);
      double xr = (poi[i].first > poi[i + 1].first) ? (poi[i].first)
                                                    : (poi[i + 1].first);
      xl *= d;
      xr *= d;
      if (p >= xl && p <= xr) {
        ans = (d < ans) ? (d) : (ans);
      }
    } else {
      double b = poi[i].first, b2 = p, d = b2 / b;
      double yl = (poi[i].second < poi[i + 1].second) ? (poi[i].second)
                                                      : (poi[i + 1].second);
      double yh = (poi[i].second > poi[i + 1].second) ? (poi[i].second)
                                                      : (poi[i + 1].second);
      yl *= d;
      yh *= d;
      if (q >= yl && q <= yh) {
        ans = (d < ans) ? (d) : (ans);
      }
    }
  }
  printf("%lf\n", ans);
  delete[] pab;
  delete[] poi;
  return 0;
}
