func_code_string: #include <bits/stdc++.h>   using namespace std;   int x[500500], y[500500];   long long minl[500500], maxl[500500], minr[500500], maxr[500500], ll, rr;   int n;   pair<long long, long long> a[500500];   bool ok(long long M) {     int j = 0;     for (int i = 0; i < n; i++) {       while ((j < n) && (a[j].first - a[i].first <= M)) j++;       if (max((i > 0) ? maxl[i - 1] : -10000000000LL,               (j < n) ? maxr[j] : -10000000000LL) -               min((i > 0) ? minl[i - 1] : 10000000000LL,                   (j < n) ? minr[j] : 10000000000LL) <=           M)         return 1;     }     return 0;   }   int main() {     scanf( %d , &n);     for (int i = 0; i < n; i++) scanf( %d%d , &x[i], &y[i]);     for (int i = 0; i < n; i++) a[i] = make_pair(x[i] - y[i], x[i] + y[i]);     sort(a, a + n);     for (int i = 0; i < n; i++) {       minl[i] = min((i > 0) ? minl[i - 1] : 10000000000LL, a[i].second);       maxl[i] = max((i > 0) ? maxl[i - 1] : -10000000000LL, a[i].second);     }     for (int i = n - 1; i >= 0; i--) {       minr[i] = min((i + 1 < n) ? minr[i + 1] : 10000000000LL, a[i].second);       maxr[i] = max((i + 1 < n) ? maxr[i + 1] : -10000000000LL, a[i].second);     }     ll = 0;     rr = 3e9;     for (int it = 0; it < 40; it++)       if (ok((ll + rr) / 2))         rr = (ll + rr) / 2;       else         ll = (ll + rr) / 2;     if (!ok(ll)) ll = rr;     printf( %.10lf n , ll * 1.0 / 2);   }   