728x90
#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<deque>
#include<math.h>
#include<cmath>
using namespace std;
int main() {
int n, k;
cin >> n;
cin >> k;
vector<int>v(n);
for(int i = 0; i < n; i++) {
cin >> v[i];
}
int s = 0;
int e = 0;
map<int,int>m;
int maxlen = 0;
m[v[s]]++;
while (s <= e) {
if (m[v[e]] > k) {
if (maxlen < (e - s)) {
maxlen = e - s;
}
m[v[s]]--;
s++;
}
else {
e++;
if (e >= n) {
if (maxlen < (e - s)) {
maxlen = e - s;
}
break;
}
m[v[e]]++;
}
}
cout << maxlen;
}
'백준 > 투포인터' 카테고리의 다른 글
부분합 - 1806번 (0) | 2021.09.01 |
---|---|
두수의 합 - 3273번(Java) (0) | 2021.09.01 |
두 용액 (0) | 2021.04.11 |
구간 합 구하기4 (0) | 2021.04.08 |
배열합치기 (0) | 2021.04.08 |