#include <bits/stdc++.h>
using namespace std;
int n, p, q;
vector<pair<double, double> > v, w;
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> p >> q;
  v.resize(n);
  pair<double, double> ma = make_pair(0, 0);
  for (int i = 0; i < n; ++i) {
    cin >> v[i].first >> v[i].second;
    ma.first = max(ma.first, v[i].first);
    ma.second = max(ma.second, v[i].second);
  }
  sort(v.begin(), v.end());
  w.push_back(make_pair(0, ma.second));
  for (int i = 0; i < n; ++i) {
    if (w.size() == 1)
      w.push_back(v[i]);
    else {
      bool go = true;
      while (go) {
        if (w.size() > 1 && w.back().second <= v[i].second)
          w.pop_back();
        else if (w.size() > 2 &&
                 (w.back().first - w[w.size() - 2].first) * v[i].second +
                         (v[i].first - w.back().first) *
                             w[w.size() - 2].second >=
                     (v[i].first - w[w.size() - 2].first) * w.back().second)
          w.pop_back();
        else
          go = false;
      }
      w.push_back(v[i]);
    }
  }
  w.push_back(make_pair(ma.first, 0));
  swap(v, w);
  int l = 0;
  while (atan2(1.0 * p, 1.0 * q) > atan2(v[l + 1].first, v[l + 1].second)) ++l;
  double al = (p * v[l + 1].second - q * v[l + 1].first) /
              (v[l].first * v[l + 1].second - v[l].second * v[l + 1].first);
  double be = -(p * v[l].second - q * v[l].first) /
              (v[l].first * v[l + 1].second - v[l].second * v[l + 1].first);
  cout << fixed << setprecision(18) << (al + be) << endl;
  return 0;
}
