拍了1200组,到底拿错了
查看原帖
拍了1200组,到底拿错了
220824
yyz1005楼主2023/10/10 16:50

和题解对照了一下,应该没什么问题啊。

枚举从多少到 nn 单独吃,剩下的两两吃。

55 个点错了 16 个,一直拍不出来哪错了

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 5010;
const ll inf = 5e9+10;
ll n,a[N];
ll res = inf,minn,maxn;
int main(){
	freopen("input.txt","r",stdin);
	freopen("data.txt","w",stdout);
	scanf("%lld",&n);
	for(ll i = 1; i <= n; i++) scanf("%lld",&a[i]);
	sort(a+1,a+n+1);
	for(ll p = n; p >= 0; p--){
		minn = inf;maxn = -inf;
		if(p<n){
			maxn = a[n];
			minn = a[p+1];
		}
		for(ll l = 1,r = p; l <= r; l++,r--){
			if(l==r){
				maxn = max(a[l],maxn);
				minn = min(a[l],minn);
				//要特判,不然会算成 a[l]*2
				break; 
			}
			maxn = max(maxn,a[l]+a[r]);
			minn = min(minn,a[l]+a[r]);
		}
		res = min(maxn-minn,res);
	}
	printf("%lld\n",res);
	return 0;
}
2023/10/10 16:50
加载中...