func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 100005;   struct Point {     int x, y;     void read() {       int a, b;       scanf( %d%d , &a, &b);       x = a + b;       y = a - b;     }     bool operator<(const Point p) const { return x != p.x ? x < p.x : y < p.y; }   } p[N];   int n;   int pre_min[N], pre_max[N];   int suf_min[N], suf_max[N];   bool check(long long mid) {     for (int l = 1, r = 1; r <= n; r++) {       while (p[r].x - p[l].x > mid && l <= n) l++;       int mx = max(pre_max[l - 1], suf_max[r + 1]);       int mn = min(pre_min[l - 1], suf_min[r + 1]);       if (mx - mn <= mid) return true;     }     return false;   }   int main() {     scanf( %d , &n);     for (int i = 1; i <= n; i++) p[i].read();     sort(p + 1, p + 1 + n);     pre_min[0] = INT_MAX;     pre_max[0] = INT_MIN;     suf_min[n + 1] = INT_MAX;     suf_max[n + 1] = INT_MIN;     for (int i = 1; i <= n; i++) {       pre_max[i] = max(pre_max[i - 1], p[i].y);       pre_min[i] = min(pre_min[i - 1], p[i].y);     }     for (int i = n; i >= 1; i--) {       suf_max[i] = max(suf_max[i + 1], p[i].y);       suf_min[i] = min(suf_min[i + 1], p[i].y);     }     long long ans, low = 0, high = 1LL << 50, mid;     while (low <= high) {       mid = (low + high) >> 1;       if (check(mid))         high = mid - 1, ans = mid;       else         low = mid + 1;     }     printf( %.10f n , ans / 2.0);     return 0;   }   