CHIA DÃY

Cho dãy số \(a_{1},\ a_{2},\ \ldots,a_{n}\). Tìm cách chia dãy \(a\) thành \(s + 1\) đoạn liên tiếp sao cho tổng các số trong đoạn lớn nhất là nhỏ nhất. Đoạn lớn nhất của một cách chia là đoạn có tổng lớn nhất trong các đoạn được chia.

Dữ liệu vào:

+ Dòng đầu tiên chứa 2 số nguyên \(n,s\ (2 \leq n \leq 1000,\ 1 \leq s \leq 50,\ \ s < n)\).

+ Dòng thứ 2 chứa \(n\) số nguyên \(a_{1},a_{2},\ \ldots,a_{n}\ ({|a}_{i}| \leq 10^{6})\).

Kết quả:

+ Một số nguyên duy nhất là tổng các số trong đoạn lớn nhất theo cách chia tìm được.

Ví dụ:

Input Output Input Output
5 2
8 2 1 5 6
8 10 3
1 2 3 4 5 6 7 8 9 10
17

Giải thích test 1: Cách chia tối ưu là {8}, {2, 1, 5}, {6}

Ràng buộc:

+ 30% số test có \(n \leq 20,\ 0 \leq a_{i} \leq 10^{6}\);

+ 30% số test có \(20 < n \leq 1000,\ 0 \leq a_{i} \leq 10^{6}\);

+ 40% số test còn lại có \(n \leq 1000,\ \left| a_{i} \right| \leq 10^{6}\).

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. sythai (5/8)
  2. npk1605 (5/10)
  3. trungnam (4/4)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

Lưu Hải Phong - 2020
[email protected]