Link:

ARC064 传送门

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;
}
Problem C

相关文章: