Link:
C:
贪心+对边界的特殊处理
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN=1e5+10; ll res=0; int n,x,dat[MAXN]; int main() { scanf("%d%d",&n,&x); for(int i=1;i<=n;i++) scanf("%d",&dat[i]); if(dat[1]>x) res+=dat[1]-x,dat[1]=x; for(int i=2;i<=n-1;i++) if(dat[i-1]+dat[i]>x) res+=dat[i-1]+dat[i]-x,dat[i]=x-dat[i-1]; if(dat[n-1]+dat[n]>x) res+=dat[n-1]+dat[n]-x; printf("%lld",res); return 0; }