[Beginner Free Contest 54] ROCK

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C++, Pascal, PyPy, Python

Một ngày nọ, các công nhân xây dựng đang làm việc hăng say thì xuất hiện ~N~ tảng đá xếp dọc trên đường. Tảng đá thứ ~i~ có trọng lượng ~a_i~. Họ được cho thêm một số ~k~ là ước của ~n~ (~n~ chia hết cho ~k~).

Chủ thầu nhân cơ hội này đã đố các công nhân của mình (ai giải được sẽ được tăng gấp đôi lương): hãy sắp xếp lại các tảng đá thành một dãy ~A_1, A_2, \ldots, A_n~ (một hoán vị của các tảng đá) sao cho biểu thức dưới đây đạt giá trị nhỏ nhất:

$$\sum_{i=1}^{n-k} |A_i - A_{i+k}|$$

Bạn hãy giúp các công nhân giải bài toán hóc búa này bằng cách in ra giá trị nhỏ nhất tìm được nhé.

Dữ liệu

  • Dòng thứ nhất chứa hai số nguyên dương ~n, k~ (~1 \le k \le n \le 10^5~, ~n~ chia hết cho ~k~).

  • Dòng thứ hai gồm ~n~ số nguyên ~a_1, a_2, \ldots, a_n~ ~(1 \le a_i \le 10^9)~ — trọng lượng các tảng đá.

Kết quả

In ra kết quả là giá trị nhỏ nhất tìm được.

Ví dụ

Sample Input

6 3
5 2 7 1 10 3

Sample Output

6

Giải thích

  • Ta có thể sắp xếp dãy trên thành ~[10, 1, 3, 7, 2, 5]~

Chấm điểm

  • Subtask 1 (50% số test): ~n, k \le 10^3~.

  • Subtask 2 (50% số test): Giới hạn như đề bài.


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.