#include <bits/stdc++.h>
using namespace std;
int getAllKInBetween(int left, int right, vector<int>& totalKTill) {
if (right < left) {
return 0;
}
if (left == 0) {
return totalKTill[right];
}
return totalKTill[right] - totalKTill[left-1];
}
int solve(vector<int> nums, int k) {
int n = (int)nums.size();
vector<int> totalKTill(n, 0);
vector<vector<int>> positions(100001);
totalKTill[0] = nums[0] == k;
positions[nums[0]].push_back(0);
for (int i=1; i<n; i++) {
positions[nums[i]].push_back(i);
totalKTill[i] = totalKTill[i-1] + (nums[i] == k);
}
int ans = 0;
for (int element=1; element<100001; element++) {
if (element == k) {
continue;
}
for (int i=0; i<(int)positions[element].size(); i++) {
for (int j=i; j<(int)positions[element].size(); j++) {
ans = max(ans, getAllKInBetween(0,positions[element][i]-1,totalKTill) + j-i+1 + getAllKInBetween(positions[element][j]+1,n-1,totalKTill));
}
}
}
return ans;
}
int main() {
// your code goes here
cout << solve({6,4,4,6,4,4}, 6) << "\n";
cout << solve({2,5,2,5,2}, 2) << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgZ2V0QWxsS0luQmV0d2VlbihpbnQgbGVmdCwgaW50IHJpZ2h0LCB2ZWN0b3I8aW50PiYgdG90YWxLVGlsbCkgewoJaWYgKHJpZ2h0IDwgbGVmdCkgewoJCXJldHVybiAwOwoJfQoJaWYgKGxlZnQgPT0gMCkgewoJCXJldHVybiB0b3RhbEtUaWxsW3JpZ2h0XTsKCX0KCXJldHVybiB0b3RhbEtUaWxsW3JpZ2h0XSAtIHRvdGFsS1RpbGxbbGVmdC0xXTsKfQoKaW50IHNvbHZlKHZlY3RvcjxpbnQ+IG51bXMsIGludCBrKSB7CglpbnQgbiA9IChpbnQpbnVtcy5zaXplKCk7Cgl2ZWN0b3I8aW50PiB0b3RhbEtUaWxsKG4sIDApOwoJdmVjdG9yPHZlY3RvcjxpbnQ+PiBwb3NpdGlvbnMoMTAwMDAxKTsKCXRvdGFsS1RpbGxbMF0gPSBudW1zWzBdID09IGs7Cglwb3NpdGlvbnNbbnVtc1swXV0ucHVzaF9iYWNrKDApOwoJZm9yIChpbnQgaT0xOyBpPG47IGkrKykgewoJCXBvc2l0aW9uc1tudW1zW2ldXS5wdXNoX2JhY2soaSk7CgkJdG90YWxLVGlsbFtpXSA9IHRvdGFsS1RpbGxbaS0xXSArIChudW1zW2ldID09IGspOwoJfQoJaW50IGFucyA9IDA7Cglmb3IgKGludCBlbGVtZW50PTE7IGVsZW1lbnQ8MTAwMDAxOyBlbGVtZW50KyspIHsKCQlpZiAoZWxlbWVudCA9PSBrKSB7CgkJCWNvbnRpbnVlOwoJCX0KCQlmb3IgKGludCBpPTA7IGk8KGludClwb3NpdGlvbnNbZWxlbWVudF0uc2l6ZSgpOyBpKyspIHsKCQkJZm9yIChpbnQgaj1pOyBqPChpbnQpcG9zaXRpb25zW2VsZW1lbnRdLnNpemUoKTsgaisrKSB7CgkJCQlhbnMgPSBtYXgoYW5zLCBnZXRBbGxLSW5CZXR3ZWVuKDAscG9zaXRpb25zW2VsZW1lbnRdW2ldLTEsdG90YWxLVGlsbCkgKyBqLWkrMSArIGdldEFsbEtJbkJldHdlZW4ocG9zaXRpb25zW2VsZW1lbnRdW2pdKzEsbi0xLHRvdGFsS1RpbGwpKTsKCQkJfQoJCX0KCX0KCXJldHVybiBhbnM7Cn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJY291dCA8PCBzb2x2ZSh7Niw0LDQsNiw0LDR9LCA2KSA8PCAiXG4iOwoJY291dCA8PCBzb2x2ZSh7Miw1LDIsNSwyfSwgMikgPDwgIlxuIjsKCXJldHVybiAwOwp9