Có một "thuật toán sắp xếp" đôi khi được gọi là sắp xếp Stalin, để sắp xếp một danh sách, bạn chỉ cần xóa các phần tử khỏi danh sách cho đến khi nó được sắp xếp theo thứ tự tăng dần. Ví dụ như danh sách
[1, 2, 4, 5, 3, 6, 6]
Khi "sắp xếp" sử dụng sắp xếp Stalin trở thành
[1, 2, 4, 5, 6, 6]
Cả ba đã được gỡ bỏ vì nó không còn hoạt động.
Bây giờ rõ ràng có nhiều cách để loại bỏ các yếu tố để sắp xếp một danh sách. Ví dụ, bất kỳ danh sách nào có ít hơn hai phần tử phải được sắp xếp để chỉ cần loại bỏ đủ các phần tử một cách mù quáng, chúng ta luôn có thể sắp xếp một danh sách. Vì đây là trường hợp chúng tôi chỉ quan tâm đến kết quả lâu nhất có thể từ một loại Stalin.
Nhiệm vụ của bạn sẽ là lấy một danh sách các số nguyên dương và đưa ra độ dài của danh sách (tăng) được sắp xếp dài nhất có thể đến bằng cách xóa các phần tử khỏi danh sách gốc. Đó là tìm độ dài của danh sách con được sắp xếp dài nhất (có thể không liền kề).
Danh sách được sắp xếp có thể có cùng một yếu tố nhiều lần liên tiếp. Bạn không cần phải hỗ trợ danh sách trống trừ khi chính chương trình của bạn trống.
Chấm điểm
Câu trả lời của bạn sẽ được ghi bằng chiều dài của loại Stalin dài nhất có thể. Các chương trình sẽ được hiểu là một chuỗi các byte thay vì các ký tự và thứ tự của chúng sẽ là thứ tự nhiên phát sinh bằng cách diễn giải các byte dưới dạng số. Điểm thấp hơn là tốt hơn.
Đây không phải là môn đánh gôn
Đây là một công cụ gọn gàng để giúp bạn ghi điểm.
Các trường hợp thử nghiệm
[1, 2, 4, 5, 3, 6, 6] -> 6
[19, 2] -> 1
[3, 3, 4, 3] -> 3
[10] -> 1
[1, 2, 4, 9] -> 4
[1, 90, 2, 3, 4, 5] -> 5
[1, 90, 91, 2, 3, 4, 5] -> 5