func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = 1e9 + 10, MN = 2e5 + 10;   const long double eps = 1e-6;   pair<int, int> p[MN], L[MN], R[MN];   int n;   bool check(long long val) {     long long Sq = ceil(sqrt(val) + eps);     while (Sq * Sq > val) --Sq;     long long T = L[n].first - L[n].second;     if (T * T <= val) return true;     for (int i = 0; i < n; ++i) {       int x = p[i].first, l, r;       if (x < 0)         l = x, r = min(x + Sq, (long long)-x);       else         l = max(x - Sq, (long long)-x), r = x;       l = lower_bound(p, p + n, make_pair(l, -INF)) - p;       r = upper_bound(p, p + n, make_pair(r, INF)) - p;       int Mx = max(L[l].first, R[r].first);       int Mn = min(L[l].second, R[r].second);       if (Mn >= INF) return true;       T = Mx - Mn;       T *= T;       T = max(T, 1ll * Mn * Mn + 1ll * x * x);       T = max(T, 1ll * Mx * Mx + 1ll * x * x);       if (T <= val) return true;     }     return false;   }   int main() {     ios_base ::sync_with_stdio(false), cin.tie(0), cout.tie(0);     cin >> n;     for (int i = 0; i < n; ++i) cin >> p[i].first >> p[i].second;     sort(p, p + n);     L[0] = R[n] = {-INF, INF};     for (int i = 0; i < n; ++i) {       L[i + 1].first = max(L[i].first, p[i].second);       L[i + 1].second = min(L[i].second, p[i].second);     }     for (int i = n - 1; ~i; --i) {       R[i].first = max(R[i + 1].first, p[i].second);       R[i].second = min(R[i + 1].second, p[i].second);     }     long long L = 0, R = 1e18 + 10;     while (L != R) {       long long mid = L + R >> 1;       if (check(mid))         R = mid;       else         L = mid + 1;     }     cout << L <<   n ;     return 0;   }   