func_code_string: #include <bits/stdc++.h>   using namespace std;   struct pt {     long long int x, y;   };   istream &operator>>(istream &input_stream, pt &a) {     input_stream >> a.x >> a.y;     return input_stream;   }   ostream &operator<<(ostream &output_stream, pt a) {     output_stream << a.x <<     << a.y;     return output_stream;   }   long long int crossprod(pt a, pt b) { return a.x * b.y - a.y * b.x; }   long long int dotprod(pt a, pt b) { return a.x * b.x + a.y * b.y; }   pt norm(pt b, pt a) {     a.x -= b.x;     a.y -= b.y;     return a;   }   long long int dist(pt a) { return (a.x) * (a.x) + (a.y) * (a.y); }   vector<pt> points;   long long int crossprod2(pt a, pt b, pt c) {     return (b.x - a.x) * (c.y - b.y) - (b.y - a.y) * (c.x - b.x);   }   bool cmp(pt a, pt b) {     a = norm(points[0], a);     b = norm(points[0], b);     return (crossprod(a, b) > 0) || (crossprod(a, b) == 0 && dist(a) < dist(b));   }   struct line {     long double a, b, c;   };   line build(pt b, pt c) {     line d;     d.a = b.y - c.y;     d.b = c.x - b.x;     d.c = -(d.a * b.x + d.b * b.y);     return d;   }   struct ptl {     long double x, y;   };   ptl norml(ptl c, ptl b) {     b.x -= c.x;     b.y -= c.y;     return b;   }   long double dotprodl(ptl c, ptl b) { return c.x * b.x + c.y * b.y; }   long double crossprodl(ptl c, ptl b) { return b.x * c.y - b.y * c.x; }   long double dist(ptl b) { return b.x * b.x + b.y * b.y; }   long double det(long double a, long double b, long double c, long double d) {     return a * d - b * c;   }   ptl interpoint(line m, line n) {     long double zn = det(m.a, m.b, n.a, n.b);     ptl res;     res.x = -det(m.c, m.b, n.c, n.b) / zn;     res.y = -det(m.a, m.c, n.a, n.c) / zn;     return res;   }   ptl interseqt(pt a, pt b, pt c, pt d) {     ptl res;     res.x = 0;     res.y = 0;     if (crossprod(norm(a, b), norm(c, d)) == 0) {       return res;     }     line m = build(a, b);     line n = build(c, d);     ptl e = interpoint(m, n);     ptl cc;     cc.x = c.x;     cc.y = c.y;     ptl dd;     dd.x = d.x;     dd.y = d.y;     ptl bb;     bb.x = b.x;     bb.y = b.y;     ptl aa;     aa.x = a.x;     aa.y = a.y;     if (dotprodl(norml(aa, e), norml(aa, bb)) >= 0 &&         dotprodl(norml(bb, e), norml(bb, aa)) >= 0)       if (dotprodl(norml(cc, e), norml(cc, dd)) >= 0) return e;     return res;   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     int n;     pt need;     cin >> n >> need.x >> need.y;     points.resize(n);     for (int i = 0; i < n; ++i) cin >> points[i];     long long int mx = points[0].x, my = points[0].y;     long long int min_x = points[0].x;     long long int min_y = points[0].y;     for (int i = 0; i < n; ++i) {       mx = max(mx, points[i].x);       my = max(my, points[i].y);     }     pt c;     c.x = 0;     c.y = my;     points.push_back(c);     c.y = 0;     c.x = mx;     points.push_back(c);     n = ((long long int)(points).size());     for (int i = 1; i < n; i++) {       if (points[i].x < min_x) {         min_x = points[i].x;         min_y = points[i].y;         swap(points[i], points[0]);       } else if (points[i].x == min_x && points[i].y < min_y) {         min_y = points[i].y;         swap(points[i], points[0]);       }     }     sort(points.begin() + 1, points.end(), cmp);     vector<pt> ans;     ans.push_back(points[0]);     ans.push_back(points[1]);     for (int i = 2; i < n; i++) {       while (((long long int)(ans).size()) > 1 &&              crossprod2(ans[((long long int)(ans).size()) - 2],                         ans[((long long int)(ans).size()) - 1], points[i]) <= 0)         ans.pop_back();       ans.push_back(points[i]);     }     ans.push_back(points[0]);     pt nul;     nul.x = 0;     nul.y = 0;     line ch = build(nul, need);     long double res = 1e18;     for (int i = 0; i < ((long long int)(ans).size()) - 1; ++i) {       ptl seqt = interseqt(ans[i], ans[i + 1], nul, need);       if (seqt.x == 0 || seqt.y == 0) continue;       res = min(res, max(need.x / seqt.x, need.y / seqt.y));     }     cout << setprecision(20) << res;     return 0;   }   