// kdel
// https://v...content-available-to-author-only...e.com/op/view.aspx?src=http%3A%2F%2Fils.ntucoder.net%2Fckfinder%2Fuserfiles%2Ffiles%2F220813%2520-%2520De%2520bai.docx&wdOrigin=BROWSELINK
#include <bits/stdc++.h>
using namespace std;
long long n, k, a[100009];
unordered_map<int, int> dem;
multiset<int> ms;
int main() {
freopen("inp.txt", "rt", stdin);
ios::sync_with_stdio(0);
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
int cnt = 0;
int ans = 0;
k++;
// bài toán tương đương: là tìm dãy con có k+1 loại phần tử khác nhau và xóa
// sau đó thống kê xem phần tử nào xuất hiện nhiều nhất
// 2 con trỏ cơ bản
for (int l = 1, r = 1; r <= n; r++) {
dem[a[r]]++;
if (dem[a[r]] == 1) {
ms.insert(1); //multiset lưu số lần xuất hiện của từng loại ký tự/số
} else {
auto it = ms.find(dem[a[r]] - 1);
ms.insert(dem[a[r]]);
ms.erase(it);
}
while (dem.size() > k) {
auto it = dem.find(a[l]);
auto it1 = ms.find(it->second);
it->second--;
if (it->second == 0) {
dem.erase(it);
ms.erase(it1);
} else {
ms.erase(it1);
ms.insert(it->second);
}
l++;
}
ans = max(ans, *ms.rbegin());
}
std::cout << ans << endl;
}
Ly8ga2RlbAovLyBodHRwczovL3YuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmUuY29tL29wL3ZpZXcuYXNweD9zcmM9aHR0cCUzQSUyRiUyRmlscy5udHVjb2Rlci5uZXQlMkZja2ZpbmRlciUyRnVzZXJmaWxlcyUyRmZpbGVzJTJGMjIwODEzJTI1MjAtJTI1MjBEZSUyNTIwYmFpLmRvY3gmd2RPcmlnaW49QlJPV1NFTElOSwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmxvbmcgbG9uZyBuLCBrLCBhWzEwMDAwOV07Cgp1bm9yZGVyZWRfbWFwPGludCwgaW50PiBkZW07Cm11bHRpc2V0PGludD4gbXM7CgppbnQgbWFpbigpIHsKICAgIGZyZW9wZW4oImlucC50eHQiLCAicnQiLCBzdGRpbik7CgogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7CgogICAgY2luID4+IG4gPj4gazsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgaW50IGNudCA9IDA7CgogICAgaW50IGFucyA9IDA7CgogICAgaysrOwogICAgLy8gYsOgaSB0b8OhbiB0xrDGoW5nIMSRxrDGoW5nOiBsw6AgdMOsbSBkw6N5IGNvbiBjw7MgaysxIGxv4bqhaSBwaOG6p24gdOG7rSBraMOhYyBuaGF1IHbDoCB4w7NhCiAgICAvLyBzYXUgxJHDsyB0aOG7kW5nIGvDqiB4ZW0gcGjhuqduIHThu60gbsOgbyB4deG6pXQgaGnhu4duIG5oaeG7gXUgbmjhuqV0CiAgICAvLyAyIGNvbiB0cuG7jyBjxqEgYuG6o24KCiAgICAKICAgIGZvciAoaW50IGwgPSAxLCByID0gMTsgciA8PSBuOyByKyspIHsKICAgICAgICBkZW1bYVtyXV0rKzsKCiAgICAgICAgaWYgKGRlbVthW3JdXSA9PSAxKSB7CiAgICAgICAgICAgIG1zLmluc2VydCgxKTsgLy9tdWx0aXNldCBsxrB1IHPhu5EgbOG6p24geHXhuqV0IGhp4buHbiBj4bunYSB04burbmcgbG/huqFpIGvDvSB04buxL3Phu5EKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBhdXRvIGl0ID0gbXMuZmluZChkZW1bYVtyXV0gLSAxKTsKICAgICAgICAgICAgbXMuaW5zZXJ0KGRlbVthW3JdXSk7CiAgICAgICAgICAgIG1zLmVyYXNlKGl0KTsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKGRlbS5zaXplKCkgPiBrKSB7CiAgICAgICAgICAgIGF1dG8gaXQgPSBkZW0uZmluZChhW2xdKTsKICAgICAgICAgICAgYXV0byBpdDEgPSBtcy5maW5kKGl0LT5zZWNvbmQpOwoKICAgICAgICAgICAgaXQtPnNlY29uZC0tOwoKICAgICAgICAgICAgaWYgKGl0LT5zZWNvbmQgPT0gMCkgewogICAgICAgICAgICAgICAgZGVtLmVyYXNlKGl0KTsKICAgICAgICAgICAgICAgIG1zLmVyYXNlKGl0MSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBtcy5lcmFzZShpdDEpOwogICAgICAgICAgICAgICAgbXMuaW5zZXJ0KGl0LT5zZWNvbmQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsKys7CiAgICAgICAgfQoKICAgICAgICBhbnMgPSBtYXgoYW5zLCAqbXMucmJlZ2luKCkpOwogICAgfQogICAgc3RkOjpjb3V0IDw8IGFucyA8PCBlbmRsOwp9Cg==