我的写法独树一帜...
大样例全过,被一个 n≤10 给搞了
#include <bits/stdc++.h>
using namespace std;
#define int long long
int l1[100005],l2[100005],r1[100005],r2[100005];
signed main()
{
int n,a,b,ma = INT_MIN,mi = INT_MAX,c,d;
cin >> n;
for (int i = 1;i <= n;i++)
{
cin >> a >> b;
l1[i] = 0 - (a - b),l2[i] = 0 - b;
r1[i] = a - (a - b),r2[i] = a - b;
}
for (int i = 1;i <= n;i++)
{
if (l1[i] < mi)
{
mi = l1[i];
c = i;
}
if (l2[i] < mi)
{
mi = l2[i];
c = i;
}
if (r1[i] > ma)
{
ma = r1[i];
d = i;
}
if (r2[i] > ma)
{
ma = r2[i];
d = i;
}
}
if (c != d) cout << ma - mi;
else
{
int ma2 = INT_MIN,mi2 = INT_MAX;
for (int i = 1;i <= n;i++)
{
if (c != i && d != i)
{
if (l1[i] < mi2)
{
mi2 = l1[i];
}
if (l2[i] < mi2)
{
mi2 = l2[i];
}
if (r1[i] > ma2)
{
ma2 = r1[i];
}
if (r2[i] > ma2)
{
ma2 = r2[i];
}
}
}
cout << max(ma - mi2,mi - ma2);
}
return 0;
}