编程题
### 问题描述 你现在有一个小球和 $n$ 个不同高度的木条,第 $i$ 个木条的高度为 $h_i$ (地面的高度为 $0$ )。接下来你需要用这 $n$ 个木条按照任意顺序摆放,摆放完后将小球放到左边的第一个木条上。 然后,让小球从左向右滚动,直到所有木条都滚过,小球会落到地面上并停止滚动。在滚动过程中,小球只能从较高的木条滚到较低的木条上,此时小球的动能会增加两个木条的高度差,即从高度为 $a$ 的木条滚到高度为 $b$ 的木条上($a \geq b$),小球的动能会增加 $a-b$。小球的初始动能为 $0$。当小球滚到的右侧木条高度高于当前木条的高度时,小球会停止运动。 这个小球质量不太合格,如果小球从一个木条下落到相邻的木条或地面的高度差超过 $m$ 时,小球就会损坏并且停止运动。 现在,请你求出小球在停止运动或损坏前可以拥有的最大动能。 ### 输入格式 第一行输入两个整数 $n, m$ 。 第二行输入 $n$ 个整数 $h_i$ 。 ### 输出格式 输出小球在停止运动或损坏前可以拥有的最大动能。 ### 样例输入 ```txt 5 2 2 3 1 6 7 ``` ### 样例输出 ```txt 2 ``` ### 说明 当木条按 $7 \ 6 \ 1 \ 2 \ 3$ 排列时,小球的滚动过程如下 $7 \rightarrow 6 \rightarrow $ 损坏,所以这种情况下小球拥有的最大动能为 $1$ 。 当木条按 $3 \ 2 \ 1 \ 6 \ 7$ 排列时,小球的滚动过程如下 $3 \rightarrow 2 \rightarrow 1 \rightarrow$ 停止,所以这种情况下小球拥有的最大动能为 $2$ ,且是所有情况中最大的。 所以,答案为 $2$ 。 ### 评测数据规模 对于所有测评数据: $2 \le n,m \le 10^6$ , $0 \le h_i \le 10^9$ 。
查看答案
赣ICP备20007335号-2