链接:
https://www.nowcoder.com/acm/contest/134/H
来源:牛客网
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
有n个盒子摆成一排,每个盒子内都有a
i个糖果。
现在你可以执行以下操作:
·你可以选择任意一个盒子,在选择的盒子内吃掉一个糖果。
对你的要求如下:
·任何m个相邻的盒子内糖果数量不能超过x个。
请问,实现要求的最少操作次数是多少?
现在你可以执行以下操作:
·你可以选择任意一个盒子,在选择的盒子内吃掉一个糖果。
对你的要求如下:
·任何m个相邻的盒子内糖果数量不能超过x个。
请问,实现要求的最少操作次数是多少?
输入描述:
第一行三个数字n, m, x(2 ≤ n,m ≤ 106,1 ≤ x ≤ 109)。 第二行n个数字(1 ≤ ai ≤ 109)。
输出描述:
输出一个操作数,代表实现要求的最少操作数。
#include<iostream>
using namespace std;
long long vec[1000005];
long long sum=0,ans=0;
int main(){
int n,m,x;
cin>>n>>m>>x;
for(int i=0;i<n;i++){
cin>>vec[i];
sum+=vec[i];
if(i>=m){
sum-=vec[i-m];
}
if(sum>x){
vec[i]-=sum-x;
ans+=sum-x;
sum=x;
}
}
cout<<ans<<endl;
return 0;
}
//11 4 10
//2 7 4 3 6 5 8 10 11 12 13