11A - Increasing Sequence

来源:互联网 发布:淘宝店铺的客服电话 编辑:程序博客网 时间:2024/05/19 11:44

A. Increasing Sequence
time limit per test
1 second
memory limit per test
64 megabytes
input
standard input
output
standard output

A sequence a0, a1, ..., at - 1 is called increasing if ai - 1 < ai for each i: 0 < i < t.

You are given a sequence b0, b1, ..., bn - 1 and a positive integer d. In each move you may choose one element of the given sequence and add d to it. What is the least number of moves required to make the given sequence increasing?

Input

The first line of the input contains two integer numbers n and d (2 ≤ n ≤ 2000, 1 ≤ d ≤ 106). The second line contains space separated sequence b0, b1, ..., bn - 1 (1 ≤ bi ≤ 106).

Output

Output the minimal number of moves needed to make the sequence increasing.

Examples
input
4 21 3 3 2
output
3


给出一个序列,和一个数d,每次可以把某个位置的数增加d,问如果将这个序列变成严格单调递增,最少需要操作多少次


需要注意相等的情况,另外加完之后想等的也要考虑


#include<cstdio>#include<cstring>#include<cmath>using namespace std;int main(){int n,d,x[2005];scanf("%d%d",&n,&d);for(int i=0;i<n;++i){scanf("%d",&x[i]);}int ans=0;for(int i=1;i<n;++i){if(x[i]<x[i-1]){int num=ceil((x[i-1]-x[i])*1.0/d);ans+=num;x[i]+=num*d;}if(x[i]==x[i-1]){x[i]+=d;++ans;}}printf("%d\n",ans);return 0;}



0 0
原创粉丝点击