알고리즘/백준
[백준] 22862. 가장 긴 짝수 연속한 부분 수열 (large)
vivi
2021. 11. 16. 16:51
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
int[] d = new int[n];
int cnt = 0;
st = new StringTokenizer(br.readLine(), " ");
for (int i = 0; i < n; i++) {
int num = Integer.parseInt(st.nextToken());
if (num % 2 == 0) cnt++;
d[i] = cnt;
}
int lt = 0, rt = 0;
int answer = 0;
while (lt <= rt && rt < n) {
// lt~rt 구간의 짝수 개수는 d[rt]-d[lt-1], 길이 - 짝수 개수 <= k 일 때, 길이
int lk = 0;
if (lt - 1 >= 0) lk = d[lt - 1];
if (rt - lt + 1 - (d[rt] - lk) <= k) {
answer = Math.max(answer, d[rt] - lk);
rt++;
continue;
}
lt++;
}
System.out.println(answer);
br.close();
}
}