Chia dãy
Đề bài
Mô tả
Alice có một dãy số gồm phần tử . Alice muốn chia dãy thành một số đoạn con liên tiếp sao cho tổng giá trị mỗi đoạn con là lớn nhất. Giá trị của một đoạn con được định nghĩa là hiệu số giữa phần tử lớn nhất và phần tử nhỏ nhất trong đoạn con đó.
Alice cần xử lí thao tác thuộc một trong hai loại sau:
- Loại 1 có dạng
1 l r x, nghĩa là gán với mọi . - Loại 2 có dạng
2 l r, nghĩa là tìm cách chia dãy gồm các phần tử từ đến của dãy thành các đoạn con liên tiếp sao cho tổng giá trị là lớn nhất có thể.
Với mỗi thao tác loại 2 hãy đưa ra tổng giá trị lớn nhất khi chia.
Dữ liệu vào
- Dòng đầu tiên chứa hai số nguyên dương .
- Dòng thứ hai chứa số nguyên .
- dòng tiếp theo, mỗi dòng chứa một trong hai loại thao tác như mô tả ở trên.
Dữ liệu ra
- Gồm nhiều dòng, mỗi dòng ghi một số là tổng giá trị lớn nhất tương ứng khi thực hiện thao tác loại 2.
Ràng buộc
- Trong tất cả các thao tác: và .
- Subtask 1 (25%): ; .
- Subtask 2 (25%): .
- Subtask 3 (25%): .
- Subtask 4 (25%): Không có ràng buộc nào thêm.
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 3 1 2 3 4 2 1 4 1 1 1 2 2 1 4 |
3 2 |
Thao tác 1: chia thành một đoạn, giá trị . Thao tác 2 cộng vào , dãy thành . Thao tác 3: chia , tổng . |
| 1 1 5 2 1 1 |
0 | Đoạn chỉ có một phần tử, giá trị . |
Ghi chú
Một đoạn con chỉ gồm một phần tử có giá trị bằng . Có thể chia thành các đoạn tùy ý (kể cả mỗi phần tử một đoạn).
Bình luận