Лягушка с прыжком до K

Просмотр в формате PDF

Submit solution


Очки: 150
Ограничение по времени: 2.0s
Ограничение по памяти: 256M

Problem type
Allowed languages
C++, Python

Лягушка хочет перебраться по ряду из n камней с первого камня на n-й. Для каждого камня известна его высота: h_1, h_2, ..., h_n.

Если лягушка находится на камне с номером i, то за один прыжок она может попасть на любой камень с номером от i + 1 до i + K, если такой камень существует.

Усилие одного прыжка с камня i на камень j равно |h_i - h_j|, то есть модулю разности высот этих камней.

Требуется определить минимальное суммарное усилие, необходимое лягушке, чтобы добраться с первого камня до n-го.

Входные данные

В первой строке заданы два целых числа n и K — количество камней и максимальная длина прыжка.

Во второй строке заданы n целых чисел h_i — высоты камней.

Выходные данные

Выведите одно целое число — минимальное суммарное усилие, необходимое, чтобы попасть с первого камня на n-й.

Ограничения

  • 2 <= n <= 10^5
  • 1 <= K <= 100
  • 1 <= h_i <= 10^9

Ответ может не помещаться в 32-битный целочисленный тип.

Примеры

Пример 1

Входные данные

5 3
10 30 40 50 20

Выходные данные

30

Оптимальный путь 1 -> 2 -> 5: |10 - 30| + |30 - 20| = 30.

Пример 2

Входные данные

2 1
1 1000000000

Выходные данные

999999999
Пример 3

Входные данные

10 3
1 1000000000 1 1000000000 1 1000000000 1 1000000000 1 1000000000

Выходные данные

999999999

Комментарии

Еще нет ни одного комментария.