代码如下
#include<bits/stdc++.h>
using namespace std;
long long a[100001],n,x,ans;
int f[100001];
int main()
{
cin>>n>>x;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<n;i++)
if(a[i]+a[i+1]>x)
{
f[i]++;
f[i+1]++;
}
a[n+1]=0;
for(int i=1;i<n;i++)
{
if(f[i]>0)
{
if(a[i+1]>=a[i]+a[i+1]-x)
{
bool F=0;
if(a[i+1]+a[i+2]>x) F=1;
ans+=a[i]+a[i+1]-x;
a[i+1]-=a[i]+a[i+1]-x;
f[i]--;
f[i+1]--;
if(F==1&&a[i+1]+a[i+2]<=x)
{
f[i+1]--;
f[i+2]--;
}
}
else
{
bool F=0;
if(a[i+1]+a[i+2]>x) F=1;
ans+=a[i]+a[i+1]-x;
a[i]=a[i]-x;
a[i+1]=0;
f[i]--;
f[i+1]--;
if(F==1&&a[i+1]+a[i+2]<=x)
{
f[i+1]--;
f[i+2]--;
}
}
}
}
cout<<ans;
return 0;
}
求大佬指点