Đảo Ngược Dãy Con
Farmer John đang sắp xếp con bò thành một hàng để chụp ảnh (). Chiều cao của con bò thứ trong dãy là , và Farmer John muốn dãy bò có một dãy con tăng dài nhất có thể.
Nhắc lại, một dãy con là tập hợp các phần tử lấy từ dãy tại các chỉ số . Dãy con được gọi là tăng nếu .
Để tối ưu hóa, Farmer John được phép chọn một dãy con bất kỳ và đảo ngược thứ tự các phần tử của dãy con đó (đúng một lần).
Ví dụ, nếu ta có dãy:
Ta có thể chọn dãy con ở các vị trí đánh dấu và đảo ngược:
Lưu ý rằng dãy con sau khi đảo ngược vẫn chiếm đúng các vị trí ban đầu của nó, các phần tử còn lại không thay đổi.
Hãy tìm độ dài tối đa của dãy con tăng có thể đạt được sau khi thực hiện đúng một lần đảo ngược dãy con bất kỳ (có thể chọn dãy con rỗng, tức là không đảo gì).
Dữ liệu vào
- Dòng đầu tiên chứa số nguyên .
- dòng tiếp theo, mỗi dòng chứa một số nguyên ().
Dữ liệu ra
In ra một số nguyên duy nhất — độ dài tối đa của dãy con tăng sau khi thực hiện một lần đảo ngược dãy con.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 9 1 2 3 9 5 6 8 7 4 |
9 | Đảo ngược dãy con gồm phần tử thứ 4, 5, 6, 7, 8, 9 (giá trị 9, 5, 6, 8, 7, 4) thành (4, 5, 6, 7, 8, 9), ta được dãy 1 2 3 4 5 6 7 8 9 là dãy con tăng toàn bộ có độ dài 9. |
| 5 1 2 3 4 5 |
5 | Dãy đã tăng sẵn, không cần đảo ngược. |
Ghi chú
Dãy con tăng cho phép các phần tử bằng nhau ().
Bình luận