和题解对照了一下,应该没什么问题啊。
枚举从多少到 n 单独吃,剩下的两两吃。
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);
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;
}