func_code_string: #include <bits/stdc++.h>   using namespace std;   const int Mx = 1e5 + 5;   const long long inf = 1e9 + 1;   struct Point {     long long x, y;   } point[Mx];   int n;   long long ans, hmax[Mx], emax[Mx], hmin[Mx], emin[Mx];   template <class T>   bool cmp(T a, T b) {     return a.x < b.x;   }   bool judge(long long mid) {     int l = 1, r = 1;     long long Max, Min;     while (r <= n) {       while (point[r].x - point[l].x <= mid && r <= n) r++;       Max = -inf;       Min = inf;       if (l != 1) {         Max = max(Max, hmax[l - 1]);         Min = min(Min, hmin[l - 1]);       }       if (r <= n) {         Max = max(Max, emax[r]);         Min = min(Min, emin[r]);       }       if (Max == -inf) return 1;       if (Max - Min <= mid) return 1;       l++;     }     return 0;   }   int main() {     scanf( %d , &n);     for (int i = 1; i <= n; i++) {       long long x, y;       scanf( %lld%lld , &x, &y);       point[i].x = x + y;       point[i].y = x - y;     }     sort(point + 1, point + 1 + n, cmp<Point>);     hmin[0] = inf;     hmax[0] = -inf;     emin[n + 1] = inf;     emax[n + 1] = -inf;     for (int i = 1; i <= n; i++) {       hmax[i] = max(hmax[i - 1], point[i].y);       hmin[i] = min(hmin[i - 1], point[i].y);     }     for (int i = n; i >= 1; i--) {       emax[i] = max(emax[i + 1], point[i].y);       emin[i] = min(emin[i + 1], point[i].y);     }     long long l = 0, r = 2e9;     while (l <= r) {       long long mid = (l + r) >> 1;       if (judge(mid)) {         r = mid - 1;         ans = mid;       } else {         l = mid + 1;       }     }     printf( %lf , 1.0 * ans / 2);   }   