func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 1e5 + 100;   pair<long long, long long> p[maxn];   long long m[maxn][2], mm[maxn][2], ycords[maxn], xcords[maxn];   int n;   bool can(long long l) {     for (int i = 0; i < n; i++) {       if (i > 0 && p[i - 1].second == p[i].second) continue;       long long newY = p[i].second + l;       int ind = upper_bound(ycords, ycords + n, newY) - ycords;       int ind1 = lower_bound(ycords, ycords + n, p[i].second) - ycords - 1;       long long left =           min(ind1 < 0 ? INT_MAX : mm[ind1][0], ind < n ? m[ind][0] : INT_MAX);       long long right =           max(ind1 < 0 ? -INT_MAX : mm[ind1][1], ind < n ? m[ind][1] : -INT_MAX);       if (right - left <= l || (left == INT_MAX && right == -INT_MAX)) {         return true;       }       newY = p[i].second - l;       ind = upper_bound(ycords, ycords + n, p[i].second) - ycords;       ind1 = lower_bound(ycords, ycords + n, newY) - ycords - 1;       left =           min(ind1 >= 0 ? mm[ind1][0] : INT_MAX, ind < n ? m[ind][0] : INT_MAX);       right =           max(ind1 >= 0 ? mm[ind1][1] : -INT_MAX, ind < n ? m[ind][1] : -INT_MAX);       if (right - left <= l || (left == INT_MAX && right == -INT_MAX)) {         return true;       }     }     return false;   }   int main() {     cin >> n;     for (long long i = 0; i < n; i++) {       cin >> p[i].first >> p[i].second;     }     pair<long long, long long> rot[n];     for (long long i = 0; i < n; i++) {       rot[i].first = p[i].first - p[i].second;       rot[i].second = p[i].second + p[i].first;       p[i] = rot[i];     }     sort(p, p + n,          [](pair<long long, long long> a, pair<long long, long long> b) {            swap(a.first, a.second);            swap(b.first, b.second);            return a < b;          });     for (int i = 0; i < n; i++) {       ycords[i] = p[i].second;     }     m[n - 1][0] = p[n - 1].first;     m[n - 1][1] = p[n - 1].first;     for (int i = n - 2; i >= 0; i--) {       m[i][0] = min(m[i + 1][0], p[i].first);       m[i][1] = max(m[i + 1][1], p[i].first);     }     mm[0][0] = p[0].first;     mm[0][1] = p[0].first;     for (int i = 1; i < n; i++) {       mm[i][0] = min(mm[i - 1][0], p[i].first);       mm[i][1] = max(mm[i - 1][1], p[i].first);     }     long long l = 0, r = 4 * (2e9 + 100);     while (l < r) {       long long mid = (l + r) / 2;       bool result = can(mid);       if (result) {         r = mid;       } else {         l = mid + 1;       }     }     cout << fixed << l / 2.f <<   n ;   }   