func_code_string: #include <bits/stdc++.h>   using namespace std;   const int inf = 200000000;   struct Point {     int x, y;     Point(int _x, int _y) {       x = _x;       y = _y;     }   };   bool operator<(const Point a, const Point b) { return a.x < b.x; }   long long solve(vector<Point> v) {     int n = (int)v.size();     vector<int> MINI(n + 1);     vector<int> MAXI(n + 1);     MINI[n] = inf;     MAXI[n] = -inf;     for (int i = n - 1; i >= 0; i--) {       MINI[i] = min(v[i].y, MINI[i + 1]);       MAXI[i] = max(v[i].y, MAXI[i + 1]);     }     long long lo = 0, hi = 1LL * inf * inf, mi;     int mini2, maxi2;     while (lo <= hi) {       mi = (lo + hi) / 2;       bool ok = 0;       int mini = inf, maxi = -inf;       for (int i = 0, j = -1; i < n; i++) {         ok = 1;         while (j + 1 <= i) {           if (1LL * (v[j + 1].x - v[i].x) * (v[j + 1].x - v[i].x) > mi) {             mini = min(mini, v[j + 1].y);             maxi = max(maxi, v[j + 1].y);             j++;           } else {             break;           }         }         mini2 = min(mini, MINI[i + 1]), maxi2 = max(maxi, MAXI[i + 1]);         if (maxi2 < mini2) {           ok = 1;         } else {           if (1LL * (maxi2 - mini2) * (maxi2 - mini2) > mi) ok = 0;           if (1LL * mini2 * mini2 + 1LL * v[i].x * v[i].x > mi) {             ok = 0;           }           if (1LL * maxi2 * maxi2 + 1LL * v[i].x * v[i].x > mi) {             ok = 0;           }           if (1LL * mini2 * mini2 + 1LL * v[j + 1].x * v[j + 1].x > mi) {             ok = 0;           }           if (1LL * maxi2 * maxi2 + 1LL * v[j + 1].x * v[j + 1].x > mi) {             ok = 0;           }         }         if (!ok) {         } else {           ok = 1;           break;         }       }       if (ok)         hi = mi - 1;       else         lo = mi + 1;     }     return lo;   }   int main() {     int n;     vector<Point> v;     cin >> n;     for (int i = 0; i < n; i++) {       int x, y;       cin >> x >> y;       v.push_back(Point(x, y));     }     sort(v.begin(), v.end());     long long ans = solve(v);     ans = min(1LL * (v[0].x - v[n - 1].x) * (v[0].x - v[n - 1].x), ans);     for (int i = 0; i < n; i++) {       swap(v[i].x, v[i].y);     }     sort(v.begin(), v.end());     ans = min(1LL * (v[0].x - v[n - 1].x) * (v[0].x - v[n - 1].x), ans);     ans = min(ans, solve(v));     cout << ans << endl;   }   