#include <bits/stdc++.h>   #pragma GCC optimize( O3 )   #pragma GCC target( sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx )   using namespace std;   namespace SimplexMethod {   const long double EPS = 1.0E-12;   vector<vector<long double>> a;   vector<long double> b, c, res;   vector<int> N, kt;   int m;   void pivot(int k, int s, int e) {     int first = kt[s];     long double p = a[s][e];     for (int _n((k)-1), i(0); i <= _n; i++) a[s][i] /= p;     b[s] /= p;     N[e] = false;     for (int _n((m)-1), i(0); i <= _n; i++)       if (i != s) {         b[i] -= a[i][e] * b[s];         a[i][first] = -a[i][e] * a[s][first];       }     for (int _n((k)-1), j(0); j <= _n; j++)       if (N[j]) {         c[j] -= c[e] * a[s][j];         for (int _n((m)-1), i(0); i <= _n; i++)           if (i != s) a[i][j] -= a[i][e] * a[s][j];       }     kt[s] = e;     N[first] = true;     c[first] = -c[e] * a[s][first];   }   vector<long double> doit(int k) {     vector<long double> res;     while (true) {       int e = -1, s = -1;       for (int _n((k)-1), i(0); i <= _n; i++)         if (N[i] && c[i] > EPS) {           e = i;           break;         }       if (e == -1) break;       for (int _n((m)-1), i(0); i <= _n; i++)         if (a[i][e] > EPS && (s == -1 || b[i] / a[i][e] < b[s] / a[s][e])) s = i;       if (s == -1) return vector<long double>();       pivot(k, s, e);     }     res.resize(k, 0);     for (int _n((m)-1), i(0); i <= _n; i++) res[kt[i]] = b[i];     return res;   }   void apply_rand(vector<long double>& a, const vector<int>& ind) {     for (int _n(((int)((a).size())) - 1), i(0); i <= _n; i++) {       if (i < ind[i]) {         swap(a[i], a[ind[i]]);       }     }   }   long double simplex(vector<vector<long double>> _A, vector<long double> _b,                       vector<long double> _c) {     vector<int> ind((int)((_A[0]).size()));     for (int _n(((int)((ind).size())) - 1), i(0); i <= _n; i++) {       ind[i] = i;     }     srand(std::chrono::duration_cast<std::chrono::nanoseconds>(               (std::chrono::high_resolution_clock::now().time_since_epoch()))               .count() +           time(0));     auto rgen = [](int n) -> unsigned {       return ((unsigned)(rand() << 15) + (unsigned)rand()) % n;     };     random_shuffle(ind.begin(), ind.end(), rgen);     for (int _n(((int)((_A).size())) - 1), i(0); i <= _n; i++) {       apply_rand(_A[i], ind);     }     apply_rand(_c, ind);     a = _A;     b = _b;     c = _c;     m = (int)((a).size());     int n = (int)((a[0]).size());     int k = n + m + 1;     c.resize(n + m);     kt.resize(m);     N = vector<int>(k, true);     for (int _n((m)-1), i(0); i <= _n; i++) {       a[i].resize(k);       a[i][n + i] = 1;       a[i][k - 1] = -1;       kt[i] = n + i;       N[kt[i]] = false;     }     int s = min_element((b).begin(), (b).end()) - b.begin();     if (b[s] < -EPS) {       c = vector<long double>(k, 0);       c[k - 1] = -1;       pivot(k, s, k - 1);       res = doit(k);       if (res[k - 1] > EPS) return -1e100;       for (int _n((m)-1), i(0); i <= _n; i++)         if (kt[i] == k - 1)           for (int _n((k - 1) - 1), j(0); j <= _n; j++)             if (N[j] && (a[i][j] < -EPS || EPS < a[i][j])) {               pivot(k, i, j);               break;             }       c = _c;       c.resize(k, 0);       for (int _n((m)-1), i(0); i <= _n; i++)         for (int _n((k)-1), j(0); j <= _n; j++)           if (N[j]) c[j] -= c[kt[i]] * a[i][j];     }     res = doit(k - 1);     if (!res.empty()) res.resize(n);     long double ans = 0.0;     for (int _n(((int)((res).size())) - 1), i(0); i <= _n; i++) {       ans += res[i] * _c[i];     }     return ans;   }   }  // namespace SimplexMethod   int d, n, m, k, p, q;   int main() {     scanf( %d%d%d , &n, &p, &q);     vector<long double> a, b, c;     a.resize(n);     b.resize(n);     c.resize(n);     vector<pair<int, int>> tp;     for (int _n((n)-1), i(0); i <= _n; i++) {       int first, second;       scanf( %d%d , &first, &second);       tp.push_back(make_pair(first, second));     }     for (int _n((n)-1), i(0); i <= _n; i++) {       int first = tp[i].first, second = tp[i].second;       a[i] = -first;       b[i] = -second;       c[i] = -1.0;     }     vector<vector<long double>> A;     A.push_back(a);     A.push_back(b);     vector<long double> B;     B.push_back(-p);     B.push_back(-q);     auto res = -SimplexMethod::simplex(A, B, c);     printf( %.12lf n , (double)res);   }