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 5000\)
- \(|A_i| \le 10^9\)
Sample Input
7
4 -2 7 7 0 9 3
Sample Output
3
1 3 6
Explanation
Độ dài lớn nhất là \(3\). Các dãy chỉ số tối ưu gồm \((1,3,6)\), \((1,4,6)\), \((2,3,6)\), \((2,4,6)\), \((2,5,6)\), ...; dãy \((1,3,6)\) nhỏ nhất 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.