Codeforces 1070D - Garbage Disposal

题目:https://codeforces.com/problemset/problem/1070/D

解题思路:
1.若前一天有垃圾剩余,则今天应至少处理一次
2.若前一天没有垃圾剩余。且今天的垃圾未填满垃圾袋,则可以暂不处理

代码:

#include
#include
#include
using namespace std;
typedef long long LL;
int main()
{
    int n,k,a,cut = 0;
    LL nl = 0;
    scanf("%d %d",&n,&k);
    for(int i = 0; i < n; i++){
        scanf("%d",&a);
        if(cut){
            cut += a;
            if(cut >= k) nl += cut / k,cut = cut % k;
            else cut = 0,nl++;
        }
        else{
            cut += a;
            if(cut >= k) nl += (LL)(cut / k),cut = cut % k;
        }
    }
    if(cut) nl++;
    printf("%lld\n",nl);
    return 0;
}

你可能感兴趣的:(codeforces)