这道题如果a[i-1]+a[i]大于x的话,优先减小a[i],因为减小a[i]不仅可以改变当前,还可以影响a[i]+a[i+1]的结果
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
typedef long long ll;
int n,x;
ll sum;
int a[maxn];
int main(){
scanf("%d%d",&n,&x);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=2;i<=n;i++){
if(a[i-1]+a[i]>x){
sum+=(a[i]+a[i-1]-x);
a[i]-=(a[i]+a[i-1]-x);
}
}
printf("%lld\n",sum);
return 0;
}