[Beginner Free Contest 29] REPLACESUM

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

Hôm nay Nhật được thầy Hùng cho một bài tập như sau:

Cho một dãy số gồm ~N~ phần tử ~a_1, \ldots, a_N~ và một số nguyên dương ~K~. Trong một thao tác, bạn thực hiện:

  • Chọn ra ~K~ phần tử nhỏ nhất của mảng (nếu mảng có ít hơn ~K~ phần tử thì chọn tất cả) rồi thay thế chúng bằng một phần tử có giá trị bằng tổng của chúng.

  • Chi phí cho mỗi lần thực hiện chính là hiệu của số lớn nhất và số nhỏ nhất trong các số vừa chọn.

  • Lặp lại thao tác cho đến khi mảng còn đúng một phần tử.

In ra phần tử cuối cùng xuất hiện trong mảng và tổng chi phí thực hiện.

Dữ liệu

  • Dòng đầu tiên chứa số nguyên dương ~N~ là số lượng phần tử ~(1 \le N \le 2 \cdot 10^5)~ và số nguyên dương ~K~ ~(2 \le K \le N)~.

  • Dòng tiếp theo chứa ~N~ số nguyên ~a_i~ ~(0 \le a_i \le 10^9)~.

Kết quả

  • Dòng đầu tiên là phần tử cuối cùng xuất hiện trong mảng.

  • Dòng tiếp theo là tổng chi phí thực hiện.

Ví dụ

Sample Input

4 2
1 2 3 4

Sample Output

10
3

Giải thích

Với ~K = 2~:

  • 2 số nhỏ nhất là 1 và 2, số được thay thế là 3 và chi phí thay thế là 2 - 1 = 1.

Mảng hiện tại: [3, 3, 4].

  • 2 số nhỏ nhất là 3 và 3, số được thay thế là 6 và chi phí thay thế là 3 - 3 = 0.

Mảng hiện tại: [6, 4].

  • 2 số nhỏ nhất là 6 và 4, số được thay thế là 10 và chi phí thay thế là 6 - 4 = 2.

Mảng hiện tại: [10].

Vậy phần tử cuối cùng là 10 và chi phí là 1 + 0 + 2 = 3.

Chấm điểm

  • 50% test có ~N \le 2000~.

  • 50% test còn lại không ràng buộc gì thêm.


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.