90 wa on #1
查看原帖
90 wa on #1
953149
DoubleQLzn楼主2024/10/20 12:34

我的写法独树一帜...

大样例全过,被一个 n10n\le 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;
}
2024/10/20 12:34
加载中...