#include <bits/stdc++.h>
using namespace std;
const int N = 2e6;
const int INF = 1e9 + 9;
const int B = 1e9 + 7;
ostream &operator<<(ostream &out, pair<long long, long long> p) {
  out << "(" << p.first << " " << p.second << ")";
  return out;
}
long long operator^(const pair<long long, long long> &a,
                    const pair<long long, long long> &b) {
  return (1ll * a.first * b.second) - (1LL * a.second * b.first);
}
bool vec_cmp(const pair<long long, long long> &a,
             const pair<long long, long long> &b) {
  long long cp = a ^ b;
  return (cp ? cp > 0 : a.first < b.first);
}
pair<long long, long long> vec(const pair<long long, long long> &a,
                               const pair<long long, long long> &b) {
  return pair<long long, long long>(b.first - a.first, b.second - a.second);
}
int sz;
pair<long long, long long> st[N];
void ConvexHull(int n, pair<long long, long long> *p) {
  sort(p + 1, p + 1 + n, vec_cmp);
  for (int i = int(1); i <= int(n); ++i) {
    while (sz >= 2) {
      pair<long long, long long> v_new = vec(st[sz], p[i]);
      pair<long long, long long> v_old = vec(st[sz - 1], st[sz]);
      if ((v_old ^ v_new) > 0) break;
      --sz;
    }
    st[++sz] = p[i];
  }
}
struct Line {
  long long a, b, c;
  Line() {}
  Line(pair<long long, long long> p1, pair<long long, long long> p2) {
    a = p1.second - p2.second;
    b = p2.first - p1.first;
    c = p1.first * p2.second - p2.first * p1.second;
  }
};
long double dist(pair<long double, long double> a) {
  return sqrt(a.first * a.first + a.second * a.second);
}
int n;
int s1, s2;
pair<long long, long long> to, b[N];
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  cin >> n;
  cin >> to.first >> to.second;
  for (int i = int(1); i <= int(n); ++i) cin >> b[i].first >> b[i].second;
  long long max_x = 0, max_y = 0;
  for (int i = int(1); i <= int(n); ++i) {
    max_x = max(max_x, b[i].first);
    max_y = max(max_y, b[i].second);
  }
  b[++n] = pair<long long, long long>(max_x, 0);
  b[++n] = pair<long long, long long>(0, max_y);
  sort(b + 1, b + 1 + n);
  n = unique(b + 1, b + 1 + n) - (b + 1);
  ConvexHull(n, b);
  int l = 1, r = sz, mid = 0;
  while (l < r - 1) {
    mid = (l + r) >> 1;
    if ((to ^ st[mid]) <= 0)
      l = mid;
    else
      r = mid;
  }
  Line l1(st[l], st[r]), l2(pair<long long, long long>(0, 0), to);
  double g = l1.a * l2.b - l2.a * l1.b;
  assert(g != 0);
  pair<long double, long double> o(0, 0);
  o.second = (-l1.a * l2.c + l2.a * l1.c) / g;
  o.first = (l1.b * l2.c - l2.b * l1.c) / g;
  cerr << o << "\n";
  long double ans = dist(to) / dist(o);
  cout << fixed << setprecision(12);
  cout << ans << "\n";
  return 0;
}
