Dãy con lồi
Đề bài
Mô tả
Một lần khác An và Bình lại chơi trò chơi với dãy số như sau: An nghĩ ra một dãy số nguyên và yêu cầu Bình hãy xoá bớt đi một số phần tử của dãy và giữ nguyên trình tự các phần tử còn lại để nhận được một dãy con lồi.
Dãy số nguyên được gọi là dãy lồi nếu nó giảm dần từ đến một nào đó rồi tăng dần đến , tức là tồn tại chỉ số () sao cho . Các bất đẳng thức đều là ngặt: hai phần tử liền nhau trong dãy lồi không được bằng nhau. Phần tử nhỏ nhất có thể là phần tử đầu hoặc cuối, nên một dãy tăng ngặt, một dãy giảm ngặt hay một dãy chỉ gồm một phần tử cũng là dãy lồi. Ví dụ: dãy số là một dãy lồi.
Yêu cầu: Hãy giúp Bình xoá ít phần tử nhất, tức là tìm một dãy con lồi có nhiều phần tử nhất của dãy An nghĩ ra.
Dữ liệu vào
- Dòng đầu tiên chứa số nguyên dương .
- Các dòng sau là số nguyên của dãy .
Dữ liệu ra
- Dòng đầu tiên ghi số phần tử của dãy con lồi dài nhất tìm được.
- dòng sau, mỗi dòng ghi một số thuộc dãy con, theo đúng thứ tự xuất hiện trong dãy ban đầu.
Nếu có nhiều dãy con lồi dài nhất, in ra một dãy bất kỳ.
Ràng buộc
- .
- với mọi .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 8 2 6 4 -5 7 9 10 6 |
6 6 4 -5 7 9 10 |
Dãy con giảm ngặt tới rồi tăng ngặt. Không có dãy con lồi nào gồm phần tử. |
| 6 3 3 2 2 5 5 |
3 3 2 5 |
Hai phần tử liền nhau không được bằng nhau, nên mỗi giá trị chỉ dùng được một lần, dãy con lồi dài nhất là . |
| 5 1 2 3 4 5 |
5 1 2 3 4 5 |
Cả dãy tăng ngặt là dãy lồi (phần tử nhỏ nhất là phần tử đầu tiên), không cần xoá phần tử nào. |
Bình luận