func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MN = 100005, inf = 1000000005, mod = 1000000007;   const long long INF = 1000000000000000005LL;   const long double eps = (long double)1e-10;   long long det(pair<int, int> x, pair<int, int> y) {     return 1LL * x.first * y.second - 1LL * x.second * y.first;   }   long long det_pts(pair<int, int> x, pair<int, int> y, pair<int, int> z) {     y.first -= x.first;     y.second -= x.second;     z.first -= x.first;     z.second -= x.second;     return det(y, z);   }   long double detf(pair<long double, long double> x,                    pair<long double, long double> y) {     return x.first * y.second - x.second * y.first;   }   namespace hull {   vector<pair<int, int> > half_oto(vector<pair<int, int> >& P) {     vector<pair<int, int> > H;     for (auto p : P) {       while (H.size() > 1 && det_pts(H[H.size() - 2], H.back(), p) >= 0LL)         H.pop_back();       H.push_back(p);     }     return H;   }   vector<pair<int, int> > oto(vector<pair<int, int> > P) {     vector<pair<int, int> > L, U, ret;     sort((P).begin(), (P).end());     U = half_oto(P);     reverse((P).begin(), (P).end());     L = half_oto(P);     int su = U.size(), sl = L.size();     for (int i = 0; i < su; ++i) ret.push_back(U[i]);     for (int i = 1; i < sl - 1; ++i) ret.push_back(L[i]);     return ret;   }   };  // namespace hull   pair<long double, long double> daj(pair<long double, long double> a,                                      pair<long double, long double> b,                                      long double alfa) {     return {a.first * alfa + b.first * (1.0 - alfa),             a.second * alfa + b.second * (1.0 - alfa)};   }   long double P, Q;   long double wyn(pair<long double, long double> p) {     if (min(p.first, p.second) < eps) return (long double)INF;     return max(P / p.first, Q / p.second);   }   long double tern(pair<int, int> a, pair<int, int> b) {     pair<long double, long double> af = {(long double)a.first,                                          (long double)a.second};     pair<long double, long double> bf = {(long double)b.first,                                          (long double)b.second};     long double zd = 0.0, zg = 1.0;     for (int i = 1; i <= 60; ++i) {       long double one_th = (zg - zd) / 3.0, a1 = zd + one_th, a2 = zg - one_th;       pair<long double, long double> l = daj(af, bf, a1), r = daj(af, bf, a2);       if (wyn(l) > wyn(r))         zd = a1;       else         zg = a2;     }     long double alfa = (zd + zg) / 2.0;     return wyn(daj(af, bf, alfa));   }   int main() {     int n, p, q;     scanf( %d%d%d , &n, &p, &q);     P = p, Q = q;     vector<pair<int, int> > pts;     for (int i = 1; i <= n; ++i) {       int a, b;       scanf( %d%d , &a, &b);       pair<int, int> p = {a, b};       pts.push_back(p);       p = {a, 0};       pts.push_back(p);       p = {0, b};       pts.push_back(p);     }     pts = hull::oto(pts);     int s = pts.size();     long double ans = (long double)INF;     for (int i = 1; i < s; ++i) {       auto cur_wyn = tern(pts[i - 1], pts[i]);       ans = min(ans, cur_wyn);     }     printf( %.9Lf , ans);   }   