Dãy bài của Vladik
Đề bài
Mô tả
Cho một dãy gồm lá bài xếp thành hàng, mỗi lá bài ghi một số nguyên dương không vượt quá .
Hãy tìm dãy con dài nhất của dãy bài thỏa mãn đồng thời hai điều kiện sau:
Gọi là số lần xuất hiện của số trong dãy con. Với mọi cặp số (từ đến ) đều phải có . Nói cách khác, số lần xuất hiện của các số trong dãy con chênh lệch nhau không quá .
Nếu trong dãy con có ít nhất một lá bài ghi số , thì tất cả các lá bài ghi số trong dãy con phải tạo thành một đoạn liên tiếp (liên tiếp trong dãy con, không nhất thiết liên tiếp trong dãy gốc). Ví dụ dãy con thỏa mãn điều kiện này, còn thì không.
Lưu ý rằng một số có thể hoàn toàn không xuất hiện trong dãy con. Khi đó với số đó, và điều kiện vẫn phải được kiểm tra với giá trị này.
Hãy in ra độ dài của dãy con dài nhất thỏa mãn cả hai điều kiện.
Dữ liệu vào
- Dòng thứ nhất chứa số nguyên , số lá bài.
- Dòng thứ hai chứa số nguyên dương không vượt quá , mô tả dãy bài.
Dữ liệu ra
- In ra một số nguyên duy nhất: độ dài của dãy con dài nhất thỏa mãn cả hai điều kiện.
Ràng buộc
- Mỗi số trong dãy nằm trong khoảng từ đến .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 1 1 1 |
1 | Tất cả các lá bài đều ghi số . Nếu lấy nhiều hơn một lá thì có số xuất hiện nhiều lần trong khi các số khác xuất hiện lần, vi phạm điều kiện . Vậy chỉ lấy được lá. |
| 24 1 8 1 2 8 2 3 8 3 4 8 4 5 8 5 6 8 6 7 8 7 8 8 8 |
17 | Có thể chọn dãy con trong đó bảy số từ đến mỗi số xuất hiện lần và số xuất hiện lần (tổng ), các lá cùng số tạo thành đoạn liên tiếp. |
| 8 8 7 6 5 4 3 2 1 |
8 | Mỗi số từ đến xuất hiện đúng một lần, lấy cả lá đều hợp lệ. |
Bình luận