题目来源:码蹄集
https://matiji.net/exam/brushquestion/20/3181/1DC60EA6DF83A333301CFFE1407FBA59
参考程序:
#include<bits/stdc++.h>
using namespace std;
int a[200000],n,tot,f[2000][2000],b[200000],cc[200000],fa[200000],q;
int main()
{
char c[20000];
// for (int k=1;k<=10;k++) {
cin>>n;
for (int i=1;i<=n;i++) cin>>a[i];
int t=1;
tot=0;
while(n-tot>=3) {
int last=0,lastlast=0;
for (int i=1;i<=n;i++) {
if (a[i]) {
if (!lastlast) lastlast=i;
else if (!last) last=i;
else if (a[lastlast]+a[last]+a[i]<=t*3) {
a[i]+=a[lastlast]+a[last];
a[lastlast]=0;
a[last]=0;
lastlast=0;
last=0;
tot+=2;
}
else {
lastlast=last;
last=i;
}
}
}
t++;
}
cout<<t-1<<endl;
//}
}