Chuyển động uốn lượn
Đề bài
Mô tả
Cho một dãy gồm số nguyên , trong đó mỗi phần tử chỉ nhận giá trị hoặc .
Bạn được phép chọn đúng một đoạn (với ) rồi đảo ngược thứ tự các phần tử trong đoạn đó, tức là trở thành .
Sau khi thực hiện phép đảo ngược, hãy tính độ dài dãy con không giảm dài nhất của dãy mới. Bạn cần chọn đoạn sao cho độ dài này lớn nhất có thể.
Một dãy con không giảm là một dãy các chỉ số sao cho . Độ dài của dãy con là .
Dữ liệu vào
- Dòng đầu chứa số nguyên , độ dài của dãy.
- Dòng thứ hai chứa số nguyên .
Dữ liệu ra
- In ra một số nguyên duy nhất là độ dài lớn nhất có thể của dãy con không giảm sau khi đảo ngược đúng một đoạn.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 1 2 1 2 |
4 | Đảo ngược đoạn , dãy trở thành 1 1 2 2, có dãy con không giảm dài 4 (chính là cả dãy). |
| 10 1 1 2 2 2 1 1 2 2 1 |
9 | Đảo ngược đoạn , dãy trở thành 1 1 1 1 2 2 2 2 2 1, dãy con không giảm dài nhất là 9 (bỏ đi số 1 cuối cùng). |
Bình luận