#include <bits/stdc++.h>
using namespace std;
int n, p, q, an;
pair<int, int> a[111111];
long long area(pair<int, int> a, pair<int, int> b) {
  return 1LL * a.first * b.second - 1LL * a.second * b.first;
}
long long area(pair<int, int> a, pair<int, int> b, pair<int, int> c) {
  return 1LL * (b.first - a.first) * (c.second - a.second) -
         1LL * (b.second - a.second) * (c.first - a.first);
}
int main() {
  scanf("%d%d%d", &n, &p, &q);
  int mx = 0, my = 0;
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &a[i].first, &a[i].second);
    mx = max(mx, a[i].first);
    my = max(my, a[i].second);
  }
  a[n++] = make_pair(0, my);
  sort(a, a + n);
  an = 0;
  for (int i = 0; i < n; i++) {
    while (an > 1 && area(a[an - 2], a[an - 1], a[i]) >= 0) {
      --an;
    }
    a[an++] = a[i];
  }
  n = an;
  a[n++] = make_pair(mx, 0);
  double res = 0.0 + p + q;
  for (int i = 0; i < n - 1; i++) {
    long long s1 = area(make_pair(p, q), a[i]);
    long long s2 = area(make_pair(p, q), a[i + 1]);
    if ((s1 >= 0 && s2 <= 0) || (s1 <= 0 && s2 >= 0)) {
      double X1 = a[i].first, Y1 = a[i].second;
      double X2 = a[i + 1].first, Y2 = a[i + 1].second;
      double A = X2 - X1;
      double B = Y2 - Y1;
      double t = (A * q - B * p) / (A * Y1 - B * X1);
      res = min(res, t);
    }
  }
  printf("%.10lf\n", res);
  return 0;
}
