func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, p, q;   pair<int, int> pro[100010];   long long cross(int x1, int y1, int x2, int y2) {     return x1 * (long long)y2 - x2 * (long long)y1;   }   double cross2(double x1, double y1, double x2, double y2) {     return x1 * y2 - x2 * y1;   }   bool check(pair<int, int> c, pair<int, int> b, pair<int, int> a) {     return cross(b.first - a.first, b.second - a.second, c.first - b.first,                  c.second - b.second) >= 0;   }   pair<int, int> st[100010];   int tp = -1;   int main() {     scanf( %d%d%d , &n, &p, &q);     int maxa = 0, maxb = 0;     for (int i = 1; i <= n; i++) {       scanf( %d%d , &pro[i].first, &pro[i].second);       maxa = max(maxa, pro[i].first);       maxb = max(maxb, pro[i].second);     }     sort(pro + 1, pro + n + 1);     st[++tp] = make_pair(0, maxb);     for (int i = 1; i <= n; i++) {       while (tp > 0 && check(pro[i], st[tp], st[tp - 1])) tp--;       st[++tp] = pro[i];     }     st[++tp] = make_pair(maxa, 0);     int line;     for (int i = 0; i < tp; i++) {       if ((atan2(q, p) - atan2(st[i + 1].second, st[i + 1].first) >= -1e-9) &&           (atan2(st[i].second, st[i].first) - atan2(q, p) >= -1e-9))         line = i;     }     double lo = 0, hi = 1e6;     while (lo < hi - 1e-9) {       double mi = (lo + hi) / 2;       if ((0 - cross2(p / mi - st[line].first, q / mi - st[line].second,                       p / mi - st[line + 1].first,                       q / mi - st[line + 1].second) >=            -1e-9))         hi = mi;       else         lo = mi;     }     printf( %.10f n , lo);     return 0;   }   