题意:给出一组数据,两个数之间要大于或等于某个数才能符合要求,你可以将原来的数加上一个整数使他符合要求,输出之后的数据以及你总共加了多少。

很简单,从第二个开始模拟就行了。


题目地址:http://codeforces.com/problemset/problem/732/B


代码:

Memory: 4 KB
Time: 15 MS
Language: GNU G++ 5.1.0
Result: Accepted
#include <iostream>
#include <cstdio>
using namespace std;
#define MAX 505
int step[MAX];
int main()
{
    int n, k, a, b, cnt=0;
    while(~scanf("%d %d", &n, &k))
    {
        cnt = 0;
        for(int i=0; i<n; i++)scanf("%d", &step[i]);
        for(int i=1; i<n; i++)
        {
            a = step[i-1];
            b = step[i];
            if(a+b<k)
            {
                cnt+=k-a-b;
                step[i]+=k-a-b;
            }
        }
        printf("%d\n", cnt);
        for(int i=0;i<n;i++){
            if(i)printf(" ");
            printf("%d", step[i]);
        }
        printf("\n");
    }
    return 0;
}