Thực đơn đa dạng
Xem dạng PDFCăng tin ký túc xá Đại học Công nghiệp Hà Nội vừa công bố thực đơn bữa trưa cho ~n~ ngày sắp tới: ngày thứ ~i~ căng tin phục vụ món có mã số ~a_i~ (cùng một món có thể được phục vụ trong nhiều ngày).
Bạn Minh muốn mua thẻ ăn dài ngày, có hiệu lực trong một số ngày liên tiếp. Minh khá kén ăn và ngại thử món lạ, nên bạn chỉ chấp nhận một thẻ ăn nếu trong những ngày thẻ có hiệu lực, căng tin phục vụ không quá ~k~ món khác nhau.
Yêu cầu
Hãy tìm số ngày lớn nhất của một thẻ ăn mà Minh chấp nhận. Nói cách khác, tìm độ dài lớn nhất của một đoạn gồm các phần tử liên tiếp ~a_l, a_{l+1}, \ldots, a_r~ của dãy sao cho số giá trị khác nhau xuất hiện trong đoạn không vượt quá ~k~.
Dữ liệu vào
- Dòng thứ nhất chứa hai số nguyên ~n~ và ~k~;
- Dòng thứ hai chứa ~n~ số nguyên ~a_1, a_2, \ldots, a_n~, các số cách nhau bởi dấu cách.
Kết quả ra
Ghi ra một số nguyên duy nhất là số ngày lớn nhất tìm được.
Ràng buộc
~1 \le k \le n \le 2 \cdot 10^5~; ~1 \le a_i \le 10^5~.
- Subtask 1 (15% số điểm – test 01–04): ~n \le 100~;
- Subtask 2 (20% số điểm – test 05–08): ~n \le 5000~;
- Subtask 3 (20% số điểm – test 09–12): ~k = 1~;
- Subtask 4 (45% số điểm – test 13–20): không có ràng buộc bổ sung.
Ví dụ
Dữ liệu vào mẫu 1
8 2
3 1 1 2 2 2 3 5
Kết quả ra mẫu 1
5
Giải thích
Thẻ ăn có hiệu lực từ ngày ~2~ đến ngày ~6~ gặp các món ~(1, 1, 2, 2, 2)~, chỉ gồm ~2~ món khác nhau, dài ~5~ ngày. Mọi đoạn ~6~ ngày liên tiếp đều chứa ít nhất ~3~ món khác nhau (chẳng hạn ngày ~1~ đến ngày ~6~ có các món ~3, 1, 2~), nên kết quả là ~5~.
Bình luận