小红的平滑值插值
题号:NC271158
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小红定义一个数组的“平滑值”为:相邻两数差的绝对值的最大值。
具体的,数组a的平滑值定义为f(a)=max_{i=1}^{n-1}|a_{i+1}-a_i|

现在小红拿到了一个数组。她每次操作可以在两个元素之间添加一个整数(不能添加在第一项前面或者最后一项后面)。小红希望最终数组的平滑值恰好等于k,你能帮小红求出最小的操作次数吗?

输入描述:

第一行输入两个正整数n,k,代表数组的大小、以及最终希望达到的平滑值。
第二行输入n个正整数a_i。代表小红拿到的数组。
2\leq n \leq 10^5
1\leq k,a_i \leq 10^9

输出描述:

一个整数,代表小红最少的操作次数。

示例1

输入

复制
5 2
1 4 5 1 3

输出

复制
2

说明

小红首先在1和4之间插入一个3,然后在5和1之间插入一个3即可。