嗯,模拟加贪心.
考虑第i盒糖的吃糖优先级,肯定有第i盒糖大于第i-1盒糖,因为第i盒糖剩的越少第i+1盒糖吃的越少而第i-1盒糖已经吃了不用再考虑,所以先吃第i盒糖吃完再吃第i-1盒糖。
代码:
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int n,x,tmp,last;
long long ans=0;
scanf("%d%d",&n,&x);
scanf("%d",&last);
for(int i=2;i<=n;i++)
{
scanf("%d",&tmp);
int cl=tmp+last-x;
if(cl>0)
{
if(cl>tmp)
tmp=0;
else
tmp-=cl;
ans+=cl;
}
last=tmp;
}
printf("%lld",ans);
return 0;
}