#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-9;
vector<pair<double, double> > Node;
double cross(pair<double, double>& o, pair<double, double>& a,
             pair<double, double>& b) {
  return (a.first - o.first) * (b.second - o.second) -
         (a.second - o.second) * (b.first - o.first);
}
void convex(vector<pair<double, double> >& convex_hull) {
  int n = Node.size(), k = 0;
  convex_hull.resize(n * 2);
  sort(Node.begin(), Node.end());
  if (n <= 3) {
    convex_hull = Node;
    return;
  }
  for (int i = 0; i < n; i++) {
    while (k >= 2 &&
           cross(convex_hull[k - 1], Node[i], convex_hull[k - 2]) <= eps)
      k--;
    convex_hull[k++] = Node[i];
  }
  for (int i = n - 2, t = k; i >= 0; i--) {
    while (k > t &&
           cross(convex_hull[k - 1], Node[i], convex_hull[k - 2]) <= eps)
      k--;
    convex_hull[k++] = Node[i];
  }
  if (n > 1) convex_hull.resize(k - 1);
  return;
}
int main() {
  int n;
  double minium, p, q;
  while (~scanf("%d%lf%lf", &n, &p, &q)) {
    double max_x = -1, max_y = -1;
    Node.clear();
    vector<pair<double, double> > convex_hull;
    minium = DBL_MAX;
    for (int i = 0; i < n; i++) {
      double x, y;
      scanf("%lf%lf", &x, &y);
      max_x = max(max_x, x);
      max_y = max(max_y, y);
      Node.push_back(make_pair(x, y));
    }
    Node.push_back(make_pair(max_x, 0));
    Node.push_back(make_pair(0, max_y));
    Node.push_back(make_pair(0, 0));
    convex(convex_hull);
    int size = convex_hull.size();
    int size1 = Node.size();
    for (int i = 0; i < size1; i++) {
      double a, b, temp1, temp2;
      temp1 = Node[i].first;
      temp2 = Node[i].second;
      if (fabs(temp1) < eps || fabs(temp2) < eps) continue;
      a = p / temp1;
      b = q / temp2;
      minium = min(minium, max(a, b));
    }
    for (int i = 0; i < (size - 1); i++) {
      double x1, y1, x2, y2, a, b;
      x1 = (double)convex_hull[i].first;
      y1 = (double)convex_hull[i].second;
      x2 = (double)convex_hull[i + 1].first;
      y2 = (double)convex_hull[i + 1].second;
      a = (x1 * q - y1 * p) / (x1 * y2 - x2 * y1),
      b = (x2 * q - y2 * p) / (x2 * y1 - x1 * y2);
      if (a < -eps || b < -eps) continue;
      minium = min(minium, a + b);
    }
    printf("%.15f\n", minium);
  }
}
