AcWing 1. 拔河-->构造模型+模拟+二分+前缀和
原题链接
简单
作者:
YMYS
,
2025-04-04 12:18:55
· 河南
,
所有人可见
,
阅读 11
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e3+10;
int n;
int a[N];
int b[N];
multiset<int> ml;
signed main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
b[i] = b[i-1] + a[i];
}
int res = 1e9;
ml.insert(-1e15), ml.insert(1e15);
for(int l=1;l<=n;l++){
for(int i=1;i<=l-1;i++){
ml.insert(b[l-1]-b[i-1]);
}
for(int r=l;r<=n;r++){
int sum = b[r] - b[l-1];
auto it = ml.lower_bound(sum);
res = min(res, *it - sum);
it--;
res = min(res, sum - *it);
}
}
cout<<res<<endl;
return 0;
}