#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-12;
stack<pair<int, int> > sta;
pair<int, int> a[200000];
int cmp(double x) {
  if (x < -eps) return -1;
  return x > eps;
}
bool comp(pair<int, int> x, pair<int, int> y) {
  return x.first > y.first || x.first == y.first && x.second > y.second;
}
bool check(pair<int, int> x, pair<int, int> y, pair<int, int> z) {
  pair<int, int> xy = make_pair(y.first - x.first, y.second - x.second);
  pair<int, int> xz = make_pair(z.first - x.first, z.second - x.second);
  return (long long)xy.first * xz.second > (long long)xy.second * xz.first;
}
double calc(double p, double q, pair<int, int> x, pair<int, int> y) {
  if (cmp((p * x.second - q * x.first) * (p * y.second - q * y.first)) == 1)
    return 1 / eps;
  return (p * (x.second - y.second) - q * (x.first - y.first)) /
         ((double)x.second * y.first - (double)x.first * y.second);
}
int main() {
  int n;
  double p, q;
  cin >> n >> p >> q;
  for (int i = 0; i < n; i++) cin >> a[i].first >> a[i].second;
  sort(a, a + n, comp);
  sta.push(a[0]);
  double ans = 1 / eps;
  for (int i = 0; i < n; i++)
    ans = min(ans, max(p / a[i].first, q / a[i].second));
  for (int i = 1; i < n; i++) {
    if (sta.top().second >= a[i].second) continue;
    while (sta.size() > 1) {
      pair<int, int> nex = sta.top();
      sta.pop();
      if (check(sta.top(), nex, a[i])) {
        sta.push(nex);
        break;
      }
    }
    ans = min(ans, calc(p, q, sta.top(), a[i]));
    sta.push(a[i]);
  }
  printf("%.6f\n", (double)ans);
  return 0;
}
