#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int inf = 1e9;
long long powm(long long a, long long p, long long m) {
  long long r = 1 % m;
  while (p) {
    if (p & 1) r = r * a % m;
    p >>= 1;
    a = a * a % m;
  }
  return r;
}
bool cw(pair<int, int>& x, pair<int, int>& y, pair<int, int>& z) {
  pair<int, int> a = make_pair(y.first - x.first, y.second - x.second);
  pair<int, int> b = make_pair(z.first - y.first, z.second - y.second);
  return 1ll * a.first * b.second < 1ll * a.second * b.first;
}
bool ccw(pair<int, int>& x, pair<int, int>& y, pair<int, int>& z) {
  pair<int, int> a = make_pair(y.first - x.first, y.second - x.second);
  pair<int, int> b = make_pair(z.first - y.first, z.second - y.second);
  return 1ll * a.first * b.second > 1ll * a.second * b.first;
}
int main() {
  int n, p, q;
  scanf("%d%d%d", &n, &p, &q);
  vector<pair<int, int> > lst(n + 2, make_pair(0, 0));
  for (int i = 0; i < n; ++i) {
    scanf("%d%d", &lst[i].first, &lst[i].second);
    lst[n].first = max(lst[n].first, lst[i].first);
    lst[n + 1].second = max(lst[n + 1].second, lst[i].second);
  }
  sort(lst.begin(), lst.end());
  pair<int, int> p1 = lst[0], p2 = lst.back();
  vector<pair<int, int> > up, down;
  up.push_back(p1);
  down.push_back(p1);
  for (int i = 1; i < lst.size(); ++i) {
    if (i == lst.size() - 1 || cw(p1, lst[i], p2)) {
      while (up.size() >= 2 && !cw(up[up.size() - 2], up.back(), lst[i]))
        up.pop_back();
      up.push_back(lst[i]);
    }
    if (i == lst.size() - 1 || ccw(p1, lst[i], p2)) {
      while (down.size() >= 2 &&
             !ccw(down[down.size() - 2], down.back(), lst[i]))
        down.pop_back();
      down.push_back(lst[i]);
    }
  }
  lst.clear();
  for (int i = 0; i < up.size(); ++i) lst.push_back(up[i]);
  for (int i = down.size() - 2; i > 0; --i) lst.push_back(down[i]);
  double ans = inf;
  for (int i = 0; i < lst.size(); ++i)
    if (1ll * lst[i].first * q == 1ll * lst[i].second * p)
      ans = min(ans, 1.0 * p / lst[i].first);
  for (int i = 0, j = 1; i < lst.size(); ++i, j = (j + 1) % lst.size()) {
    long long d =
        1ll * lst[i].first * lst[j].second - 1ll * lst[i].second * lst[j].first;
    long long d1 = 1ll * p * lst[j].second - 1ll * q * lst[j].first;
    long long d2 = 1ll * lst[i].first * q - 1ll * lst[i].second * p;
    if (d == 0 || 1.0 * d1 / d < 0 || 1.0 * d2 / d < 0) continue;
    ans = min(ans, 1.0 * (d1 + d2) / d);
  }
  printf("%0.9lf\n", ans);
  return 0;
}
