小龙哥哥打游戏
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小龙哥哥正沉浸于一款充满挑战的游戏中,他的目标是击败最终的魔王。但在通往魔王的道路上,他必须先克服N波小怪的阻碍。

根据这款游戏的独特规则,每波小怪都拥有一个特定的跳跃值hi。小龙哥哥可以在阶梯之间灵活跳跃,具体来说,他可以从阶梯i跳到阶梯i+1、i+2,一直到阶梯i+K中的任意一个。

然而,跳跃并非毫无代价。当他从第i波小怪跳到第j波小怪时(其中j在[i+1, i+K]的范围内),他会消耗|hi - hj|的体力。为了在与魔王的决战中保持最佳状态,小龙哥哥希望能够尽可能地节省体力,减少不必要的消耗。

因此,你的任务是帮助小龙哥哥计算出,从第一波小怪跳到第N波小怪,他最少需要消耗多少体力。这将是他制定策略、保存实力、最终击败魔王的关键所在。


输入描述:

第一行为N(2 ≤ N ≤ 105 ),K(1 ≤ K ≤ 100),见题意

第二行N个整数[h1,h2,h3...hn](1 ≤ hi ≤ 104),代表每波小怪的跳跃值

输出描述:

输出最少需要消耗多少体力。
示例1

输入

复制
5 3
10 30 40 50 20

输出

复制
30

说明

1 -> 2 -> 5,消耗 |10 - 30| + |30 - 20| = 30体力