Cho dãy gồm \(N\) số nguyên \(A_1, A_2, \dots, A_N\). Hãy tìm một dãy con tăng nghiêm ngặt dài nhất, tức là dãy các chỉ số \(i_1 < i_2 < \dots < i_k\) với \(A_{i_1} < A_{i_2} < \dots < A_{i_k}\) và \(k\) lớn nhất.
Để đáp án là duy nhất, trong số các dãy chỉ số tối ưu hãy chọn dãy nhỏ nhất theo thứ tự từ điển (so sánh \(i_1\) trước, nếu bằng nhau thì so sánh \(i_2\), ...).
Input
- Dòng thứ nhất chứa số nguyên \(N\).
- Dòng thứ hai chứa \(N\) số nguyên \(A_1, \dots, A_N\).
Output
- Dòng thứ nhất: độ dài \(k\) của dãy con tăng dài nhất.
- Dòng thứ hai: \(k\) chỉ số \(i_1, i_2, \dots, i_k\) (đánh số từ \(1\), theo thứ tự tăng dần) của dãy chỉ số nhỏ nhất theo thứ tự từ điển.
Constraints
- \(1 \le N \le 2 \cdot 10^5\)
- \(|A_i| \le 10^9\)
Sample Input
7
8 3 -5 3 6 4 10
Sample Output
4
3 4 5 7
Explanation
Độ dài lớn nhất là \(4\). Có hai dãy chỉ số tối ưu là \((3,4,5,7)\) ứng với \(-5,3,6,10\) và \((3,4,6,7)\) ứng với \(-5,3,4,10\); dãy đầu nhỏ hơn theo thứ tự từ điển.
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.