Chia mảng thành k đoạn
Đề bài
Mô tả
Với một hằng số cho trước, độ đẹp của một mảng có ít nhất phần tử được định nghĩa là tổng của phần tử lớn nhất trong mảng đó.
Ví dụ, với và , ba phần tử lớn nhất của là nên độ đẹp của bằng .
Cho mảng , hằng số và số nguyên . Hãy chia mảng thành đúng đoạn con liên tiếp sao cho:
- Mỗi phần tử của thuộc đúng một đoạn.
- Mỗi đoạn có ít nhất phần tử.
- Tổng độ đẹp của đoạn là lớn nhất có thể.
Dữ liệu vào
- Dòng đầu chứa ba số nguyên , , .
- Dòng thứ hai chứa số nguyên .
Dữ liệu ra
- Dòng đầu in ra tổng độ đẹp lớn nhất.
- Dòng thứ hai in ra số nguyên với , mô tả cách chia: đoạn thứ nhất gồm các phần tử từ vị trí đến , đoạn thứ hai gồm các phần tử từ đến , ..., đoạn thứ gồm các phần tử từ đến .
Nếu có nhiều cách chia tối ưu, in ra bất kỳ cách nào.
Ràng buộc
- , ,
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 9 2 3 5 2 5 2 4 1 1 3 2 |
21 2 4 |
Cách chia [5, 2], [5, 2], [4, 1, 1, 3, 2] cho độ đẹp . Cách chia [5, 2, 5], [2, 4], [1, 1, 3, 2] cũng cho nên cũng được chấp nhận. |
| 6 1 4 4 1 3 2 2 3 |
12 1 3 4 |
Với , độ đẹp của một đoạn là phần tử lớn nhất của đoạn. Cách chia [4], [1, 3], [2], [2, 3] cho . |
| 2 1 2 -1000000000 1000000000 |
0 1 |
Chỉ có một cách chia duy nhất, tổng độ đẹp bằng . Giá trị âm vẫn bắt buộc phải nằm trong một đoạn nào đó. |
Bình luận