DHBB 2026 - DX41 - 10 - Chia dãy

Xem dạng PDF

Gửi bài giải

Điểm: 30,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout
Test chính thức

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

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

Cho dãy số nguyên dương ~a_1,a_2,\dots,a_n~. Ta được phép chia dãy thành một số đoạn liên tiếp không rỗng. Với mỗi đoạn:

  • Nếu độ dài đoạn nhỏ hơn ~k~ thì giá trị của đoạn bằng tổng các phần tử trong đoạn đó.

  • Nếu độ dài đoạn từ ~k~ trở lên thì giá trị của đoạn bằng tổng các phần tử trong đoạn trừ đi phần tử nhỏ nhất trong đoạn.

Yêu cầu: Hãy tìm cách chia dãy số sao cho tổng giá trị của tất cả các đoạn là nhỏ nhất.

Input

  • Dòng ~1~: Hai số nguyên dương ~n,k~ ~(n,k \le 10^5)~.

  • Dòng ~2~: ~n~ số nguyên dương ~a_i~ ~(1 \le a_i \le 10^9; 1 \le i \le n)~.

Output

In ra một số nguyên: tổng giá trị nhỏ nhất có thể đạt được.

Scoring

Subtask Điểm Ràng buộc
1 ~30\%~ ~n,k \le 20~
2 ~30\%~ ~n,k \le 10^3~
3 ~40\%~ ~n,k \le 10^5~

Sample Input 1

5 2
2 3 1 4 6

Sample Output 1

10

Notes

Chia làm ~3~ đoạn:

~2~ ~3~ | ~1~ | ~4~ ~6~

Tổng giá trị các đoạn: ~3+1+6=10~.


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.