Điểm:
400 (p)
Thời gian:
1.0s
Bộ nhớ:
256M
Input:
bàn phím
Output:
màn hình
Cho dãy \(A\) gồm \(N\) phần tử là các số nguyên dương \(A_1, A_2, ..., A_N\). Dãy \(C\) được gọi là dãy con tăng độ dài \(K\) của \(A\) nếu thoả mãn các điều kiện sau:
- \(K \geq 1\).
- \(1 \leq i_1 < i_2 < i_3 < ... < i_K \leq N\).
- \(C_1 = A_{i_1}, C_2 = A_{i_2}, ..., C_K = A_{i_K}\).
- \(C_1 < C_2 < ... < C_K\) nếu \(K \geq 2\)
Yêu cầu: Tìm dãy \(C\) sao cho độ dài \(K\) lớn nhất có thể. Nếu có nhiều dãy \(C\) thoả mãn, in ra dãy có thứ tự từ điển nhỏ nhất. Dãy \(C\) được gọi là dãy có thứ tự từ điển nhỏ hơn dãy \(C'\) nếu tồn tại chỉ số \(p\) \((p \geq 1)\) thoả mãn các điều kiện sau:
- \(C_1 = C'_1\), \(C_2 = C'_2\), \(...\), \(C_{p-1} = C'_{p-1}\) nếu \(p > 1\).
- \(C_p < C'_p\).
Input
- Dòng thứ nhất gồm số nguyên dương \(N\).
- Dòng thứ hai gồm \(N\) số nguyên dương \(A_1, A_2, ..., A_N\).
Output
- Dòng thứ nhất in ra số \(K\) là độ dài dãy con tăng \(C\) dài nhất.
- Dòng thứ hai in ra \(K\) số nguyên dương \(C_1, C_2, ..., C_N\) là dãy có thứ tự từ điển nhỏ nhất độ dài \(K\).
Constraints
- \(N \leq 10^5\)
- \(|A_i| \leq 10^9\)
Scoring
- Subtask \(1\) (\(50\%\) số điểm): \(N\leq 10^3\).
- Subtask \(2\) (\(50\%\) số điểm): Không có ràng buộc gì thêm.
Example
Test 1
Input
5
1 3 5 4 6
Output
4
1 3 4 6
Bình luận
Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.