题目:http://codeforces.com/problemset/problem/732/B
题目大意:Polycarp家的狗在相邻的两天内至少要遛k次,求在当前计划的基础上Polycarp最少还要多遛几次他的狗?
思路:将相邻两天遛狗的次数相加,如果次数少于k,就增加两天中的后一天的遛狗次数直至两天之和等于k即可
AC代码
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,m,k,a[501],sum=0;
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>a[i];
sum+=a[i];
}
for(int i=0;i<n;i++)
{
k=a[i]+a[i+1];
if(k<m)
a[i+1]+=m-k;
}
for(int i=0;i<n;i++)
sum-=a[i];
cout<<abs(sum)<<endl;
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}