Boxes and Candies

问题 G: Boxes and Candies

时间限制: 1 Sec  内存限制: 128 MB
提交: 154  解决: 62
[提交][状态][讨论版][命题人:admin]

题目描述

There are N boxes arranged in a row. Initially, the i-th box from the left contains ai candies.
Snuke can perform the following operation any number of times:
Choose a box containing at least one candy, and eat one of the candies in the chosen box.
His objective is as follows:
Any two neighboring boxes contain at most x candies in total.
Find the minimum number of operations required to achieve the objective.

Constraints
2≤N≤105
0≤ai≤109
0≤x≤109

输入

The input is given from Standard Input in the following format:
N x
a1 a2 … aN

输出

Print the minimum number of operations required to achieve the objective.

样例输入

3 3
2 2 2

样例输出

1

提示

Eat one candy in the second box. Then, the number of candies in each box becomes (2,1,2).

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <iostream>
using namespace std;

typedef long long int LL;

int main()
{
    long long int ans = 0;
    int a[100005];
    int n,x;
    scanf("%d %d",&n,&x);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    if(a[0]>x)
    {
        int t = a[0]-x;
        ans+=t;
        a[0]-=t;
    }
    for(int i=1;i<n;i++)
    {
        if(a[i]+a[i-1]>x)
        {
            int t = x-a[i-1];
            ans+=a[i]-t;
            a[i]-=a[i]-t;
        }
    }
    printf("%lld",ans);
}

 贪心

猜你喜欢

转载自www.cnblogs.com/hao-tian/p/9094060.html