My代码
#include<bits/stdc++.h>
using namespace std;
int i,n,t=1,a[40005];
long long s=0;
void byx(int k)
{
int tmp=a[k-1]+a[k];
s+=tmp;
for(i=k;i<t-1;i++)
{
a[i]=a[i+1];
}
t--;
int j=0;
for(j=k-1;j>0&&a[j-1]<tmp;j--)
{
a[j]=a[j-1];
}
a[j]=tmp;
while(j>=2&&a[j]>=a[j-2])
{
int d=t-j;
byx(j-1);
j=t-d;
}
}
int main()
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<n;i++)
{
a[t++]=a[i];
while(t>=3&&a[t-3]<=a[t-1])
{
byx(t-2);
}
}
while(t>1)
{
byx(t-1);
}
printf("%lld\n",s);
}