Cho \(n\) khối lập phương theo một thứ tự nhất định, nhiệm vụ của bạn là xây các tháp từ những khối lập phương này. Mỗi khi một khối được đặt lên trên một khối khác, khối ở trên phải nhỏ hơn khối ở dưới.
Bạn phải xử lý các khối theo đúng thứ tự đã cho. Với mỗi khối, bạn có thể đặt nó lên trên một tháp đã có (nếu hợp lệ), hoặc bắt đầu một tháp mới.
Yêu cầu. Hãy tìm số lượng tháp tối thiểu cần dùng để xếp hết tất cả các khối.
\InputFile
Dòng đầu tiên chứa một số nguyên \(n\) --- số lượng khối lập phương.
Dòng thứ hai chứa \(n\) số nguyên \(k_1, k_2, \ldots, k_n\) --- kích thước của từng khối, theo đúng thứ tự cần xử lý.
\OutputFile
In ra một số nguyên duy nhất --- số lượng tháp tối thiểu cần dùng.
\Examples
\beginexample
\exmp
5
3 8 2 1 5
2
\endexample
\Note
Trong ví dụ, có thể xây \(2\) tháp như sau: tháp thứ nhất lần lượt gồm các khối \(3, 2, 1\) (mỗi khối đặt sau nhỏ hơn khối trước), tháp thứ hai gồm các khối \(8, 5\). Không thể xếp hết các khối chỉ với \(1\) tháp, vậy đáp án là \(2\).
\Scoring
- (30%) \(1 \le n \le 1000\);
- (70%) \(1 \le n \le 2 \times 10^5\).
Bình luận
Đăng nhập để bình luận
Chưa có bình luận nào.