Мэлхий - 2


Submit solution

Points: 4
Time limit: 1.0s
Memory limit: 16M

Author:
Problem type
Allowed languages
C++

N ширхэг чулуу байна, тэдгээр нь 1, 2, ..., N гэж дугаарлагдсан.
Чулуу бүрийн өндөрийг \(h_i\) гэж өгсөн.

Мэлхий эхлээд 1-р чулуу дээр байрлана. Тэрээр дараах үйлдлийг хэд хэдэн удаа давтан хийж байж N-р чулуу дээр хүрнэ:

  • Хэрэв мэлхий одоогоор i-р чулуу дээр байгаа бол, i+1, i+2, ..., i+K гэсэн дараагийн K хүртэлх аль ч чулуу руу үсэрч болно.
  • Үсэрч буухад $|h_i - h_j|$ гэсэн зардал гарна ($j$ нь буусан чулуу).

Мэлхий N-р чулуу дээр хүрэхэд гарах нийт зардлын хамгийн бага боломжит утгыг ол.

Оролт:

Оролтын файлын эхний мөрөнд чулуунуудын тоо болох N, үсрэх алхамыг илэрхийлэх K бүхэл тоо өгөгдөнө.

Хоёр дахь мөрөнд чулуунуудын өндөрийг илэрхийлэх h1 h2 … hN гэсэн N ш бүхэл тоонууд хоосон зайгаар тусгаарлан өгөгдөнө.

Гаралт:

Гарах боломжтой хамгийн бага нийт зардлыг хэвлэ.

Хязгаарлалтууд:

  • Оролтын бүх утгууд нь бүхэл тоо байна.
  • \(2 \leq N \leq 10^6\)
  • \(K <= 100\)
  • \(1 \leq h_i \leq 10^9\)
Дэд бодлого
Дэд бодлого оноо Хязгарлалт Тайлбар
1 Дэд бодлого -1 1 \(K,N<=45\)
2 Дэд бодлого -2 1 \(K<=50, N<=10^3\)
3 Дэд бодлого -3 1 \(K<=100, N<=10^5\)
4 Дэд бодлого -4 1 \(K<=100, N<=10^6\)

Жишээ:

Оролт-1
5 3
10 30 40 50 20
Гаралт-1
30
Тайлбар-1

Хэрвээ бид 1 → 2 → 5 гэсэн замыг сонговол нийт зардал:
|10-30| + |30-20| = 20 + 10 = 30

Оролт-2
3 1
10 20 10
Гаралт-2
20
Тайлбар-2

1 → 2 → 3 гэсэн замыг сонговол:
|10-20| + |20-10| = 10 + 10 = 20

Оролт-3
2 100
10 10
Гаралт-3
0
Тайлбар-3

1 → 2 замыг сонговол:
$|10-10| = 0$

Оролт-4
10 4
40 10 20 70 80 10 20 70 80 60
Гаралт-4
40
Тайлбар-4

1 → 4 → 8 → 10 гэсэн замыг сонговол:
$|40-70| + |70-70| + |70-60| = 30 + 0 + 10 = 40$


Comments

There are no comments at the moment.