#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:16777216")
const int inf = 0x3f3f3f3f;
const string debug_line = "yolo";
const double PI = 4 * atan(1);
struct Point {
  long long first, second;
  Point(long long a = 0, long long b = 0) { first = a, second = b; }
  bool operator<(Point b) const {
    if (first != b.first) return first < b.first;
    return second > b.second;
  }
  void rotate() {
    swap(first, second);
    first = -first;
  }
  bool operator==(Point b) const {
    return first == b.first && second == b.second;
  }
};
bool clockwise(Point a, Point b, Point c) {
  a = Point(a.first - b.first, a.second - b.second);
  b = Point(b.first - c.first, b.second - c.second);
  b.rotate();
  return a.first * b.first + a.second * b.second >= 0;
}
vector<Point> makehull(vector<Point>& X) {
  sort(X.begin(), X.end());
  X.erase(unique(X.begin(), X.end()), X.end());
  vector<Point> res;
  for (Point first : X) {
    while (res.size() >= 2 &&
           !clockwise(res[res.size() - 2], res.back(), first)) {
      res.pop_back();
    }
    res.push_back(first);
  }
  return res;
}
vector<Point> pt;
int main() {
  int n, p, q;
  scanf("%d%d%d", &n, &p, &q);
  for (int(i) = (0); (i) < (n); ++(i)) {
    int a, b;
    scanf("%d%d", &a, &b);
    pt.push_back({a, b});
    pt.push_back({a, 0});
    pt.push_back({0, b});
  }
  pt = makehull(pt);
  for (int(i) = (0); (i) < (pt.size() - 1); ++(i)) {
    if (pt[i].second * p >= pt[i].first * q &&
        pt[i + 1].second * p <= pt[i + 1].first * q) {
      Point s = {pt[i].first - pt[i + 1].first,
                 pt[i].second - pt[i + 1].second};
      printf("%1.12lf\n",
             1.0 * (p * s.second - q * s.first) /
                 (pt[i].first * s.second - pt[i].second * s.first));
      break;
    }
  }
  return 0;
}
