
arr =new int [100001] //1.
//2.
start = 0
end = 0
while(start <= n){
//3.
if(check[arr[end]] < k){
check[arr[end]] +=1;
end++;
//4.
int length = end-start-1;
if(length > max){
max = length;
}
//5
} else if (check[arr[end]] >= k) {
check[arr[start]] -=1;
start ++;
}
//6.
if(end == n){
break;
}
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int[] arr = new int[n];
int[] check = new int[100001];
st = new StringTokenizer(br.readLine());
for(int i=0; i<arr.length; i++){
arr[i] = Integer.parseInt(st.nextToken());
}
int start = 0;
int end = 0;
int max = 0;
while(start <= n){
//3.
if(check[arr[end]] < k){
check[arr[end]] +=1;
end++;
//4.
int length = end-start-1;
if(length > max){
max = length;
}
//5
} else if (check[arr[end]] >= k) {
check[arr[start]] -=1;
start ++;
}
//6.
if(end == n){
break;
}
}
if(n== 0){
System.out.println(0);
}else{
System.out.println(max+1);
}
}

왜이리 투포인터 문제는 조건이 까다로운거 같지??