#include <bits/stdc++.h>
using namespace std;
const int N = 100000 + 10, oo = 1000 * 1000 * 1000;
int n;
double ans = oo;
vector<pair<int, int> > ch;
pair<int, int> p[N], o;
long long operator*(pair<int, int> p, pair<int, int> q) {
  return 1ll * p.first * q.second - 1ll * p.second * q.first;
}
pair<int, int> operator-(pair<int, int> p, pair<int, int> q) {
  return pair<int, int>(p.first - q.first, p.second - q.second);
}
void convex(int s) {
  for (int i = 0; i < n; i++) {
    while ((int)ch.size() > s &&
           (p[i] - ch.back()) * (p[i] - ch[ch.size() - 2]) <= 0)
      ch.pop_back();
    ch.push_back(p[i]);
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> o.first >> o.second;
  for (int i = 0; i < n; i++) cin >> p[i].first >> p[i].second;
  n++;
  sort(p, p + n);
  convex(1);
  reverse(p, p + n);
  convex(ch.size());
  n = ch.size() - 1;
  for (int i = 1; i < n; i++)
    ans =
        min(ans, max(1. * o.first / ch[i].first, 1. * o.second / ch[i].second));
  for (int i = 1; i < n - 1; i++) {
    pair<int, int> v = ch[i], u = ch[i + 1];
    if (!(u * v)) {
      cout << 0 << '\n';
      return 0;
    }
    double tmp1 = 1. * (o * v) / (u * v), tmp2 = 1. * (o * u) / (v * u);
    if (tmp1 >= 0 && tmp2 >= 0) ans = min(ans, tmp1 + tmp2);
  }
  cout << setprecision(8) << fixed << ans << '\n';
  return 0;
}
