#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9, oo = numeric_limits<double>::infinity();
pair<vector<long double>, long double> simplexMethodPD(
    vector<vector<long double> > &A, vector<long double> &b,
    vector<long double> &c, bool mini = true) {
  int n = c.size(), m = b.size();
  vector<vector<long double> > T(m + 1, vector<long double>(n + m + 1));
  vector<int> base(n + m), row(m);
  for (int j = 0; j < m; ++j) {
    for (int i = 0; i < n; ++i) T[j][i] = A[j][i];
    row[j] = n + j;
    T[j][n + j] = 1;
    base[n + j] = 1;
    T[j][n + m] = b[j];
  }
  for (int i = 0; i < n; ++i) T[m][i] = c[i] * (mini ? 1 : -1);
  while (true) {
    int p = 0, q = 0;
    for (int i = 0; i < n + m; ++i)
      if (T[m][i] <= T[m][p]) p = i;
    for (int j = 0; j < m; ++j)
      if (T[j][n + m] <= T[q][n + m]) q = j;
    long double t = min(T[m][p], T[q][n + m]);
    if (t >= -eps) {
      vector<long double> x(n);
      for (int i = 0; i < m; ++i)
        if (row[i] < n) x[row[i]] = T[i][n + m];
      return {x, T[m][n + m] * (mini ? -1 : 1)};
    }
    if (t < T[q][n + m]) {
      for (int j = 0; j < m; ++j)
        if (T[j][p] >= eps)
          if (T[j][p] * (T[q][n + m] - t) >= T[q][p] * (T[j][n + m] - t)) q = j;
      if (T[q][p] <= eps) return {vector<long double>(n), oo * (mini ? 1 : -1)};
    } else {
      for (int i = 0; i < n + m + 1; ++i) T[q][i] = -T[q][i];
      for (int i = 0; i < n + m; ++i)
        if (T[q][i] >= eps)
          if (T[q][i] * (T[m][p] - t) >= T[q][p] * (T[m][i] - t)) p = i;
      if (T[q][p] <= eps) return {vector<long double>(n), oo * (mini ? -1 : 1)};
    }
    for (int i = 0; i < m + n + 1; ++i)
      if (i != p) T[q][i] /= T[q][p];
    T[q][p] = 1;
    base[p] = 1;
    base[row[q]] = 0;
    row[q] = p;
    for (int j = 0; j < m + 1; ++j) {
      if (j != q) {
        long double alpha = T[j][p];
        for (int i = 0; i < n + m + 1; ++i) T[j][i] -= T[q][i] * alpha;
      }
    }
  }
  return {vector<long double>(n), oo};
}
int main() {
  long long int n, p, q;
  cin >> n >> p >> q;
  vector<long double> restr = {(long double)-p, (long double)-q};
  vector<vector<long double> > functions(2, vector<long double>(n));
  for (int i = 0; i < n; i++) {
    cin >> functions[0][i] >> functions[1][i];
    functions[0][i] *= -1;
    functions[1][i] *= -1;
  }
  vector<long double> to_mini(n, 1);
  auto ans = simplexMethodPD(functions, restr, to_mini);
  cout << fixed << setprecision(10) << ans.second << '\n';
  return 0;
}
