728x90
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
728x90
메모리: 92,296 KB, 시간: 412 ms
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
StringBuilder sb = new StringBuilder();
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; tc++) {
st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int p = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
int[] days = new int[n];
for (int i = 0; i < n; i++) days[i] = Integer.parseInt(st.nextToken());
int ans = 0;
for (int i = 0; i < n ; i++) { // i := 시작일의 인덱스
int s = i, e = n - 1;
while(s <= e) {
int mid = (s + e) / 2; // 가능성이 있는 날의 인덱스
int blank = (days[mid] - days[i] + 1) - (mid - i + 1);
if(blank > p) e = mid - 1;
else {
ans = Math.max(ans, (days[mid] - days[i] + 1) + (p - blank));
s = mid + 1;
}
}
}
sb.append("#" + tc + " " + ans + "\n");
}
System.out.println(sb);
}
}
728x90
'Problem Solving > SWEA' 카테고리의 다른 글
[SW Expert Academy, SWEA 1232] 사칙연산 (java) (0) | 2024.01.16 |
---|---|
[SW Expert Academy, SWEA 11446] 사탕 가방 (java) (0) | 2023.07.09 |
[SW Expert Academy, SWEA 9843] 촛불 이벤트 (java) (1) | 2023.06.15 |
[SW Expert Academy, SWEA 13736] 사탕 분배 (java) (0) | 2023.05.06 |
[SW Expert Academy, SWEA 7701] 염라대왕의 이름 정렬 (java) (0) | 2023.05.06 |