#276. Chia đoạn dãy số II (DIVIDEB)

Bộ nhớ: 512 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: So sánh văn bản
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một dãy số nguyên dương A có độ dài N . Cần chia dãy này thành M đoạn liên tiếp sao cho giá trị lớn nhất của tổng các đoạn con là nhỏ nhất có thể.

Ví dụ, chia dãy 4 \ \ 2 \ \ 4 \ \ 5 \ \ 1 thành 3 đoạn:

  • Nếu chia thành [4 2][4 5][1] , tổng các đoạn lần lượt là 6, 9, 1 . Giá trị lớn nhất là 9 .
  • Nếu chia thành [4][2 4][5 1] , tổng các đoạn lần lượt là 4, 6, 6 . Giá trị lớn nhất là 6 .

Dù chia thế nào thì giá trị lớn nhất cũng không thể nhỏ hơn 6 . Vì vậy, với dãy 4 \ \ 2 \ \ 4 \ \ 5 \ \ 1 chia thành 3 đoạn, giá trị lớn nhất của tổng các đoạn nhỏ nhất là 6 .

Dữ liệu:

  • Dòng 1 chứa hai số nguyên dương N M .
  • Dòng 2 chứa N số nguyên không âm A_i cách nhau bởi dấu cách.

Kết quả:

  • Một số nguyên dương duy nhất, là giá trị lớn nhất của tổng các đoạn sau khi đã tối thiểu hóa.

Ví dụ:

Dữ liệu:

5 3
4 2 4 5 1

Kết quả:

6

Giới hạn:

  • Với 20\% dữ liệu: N \leq 10 .
  • Với 40\% dữ liệu: N \leq 1000 .
  • Với 100\% dữ liệu: N \leq 10^5 , M \leq N , tổng các A_i không vượt quá 10^9 .