[BOJ] 16564. 히오스 프로게이머
15 Apr 2026
Reading time ~1 minute
풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
int[] arr = new int [N];
for(int i = 0; i < N; i++) {
arr[i] = sc.nextInt();
}
int answer = 0;
int T_start = 1;
int T_end = 1_000_000_001;
while(T_start <= T_end) {
int T_mid = (T_start + T_end) >>> 1;
if(isOK(arr,T_mid, K)) {
answer = Math.max(answer, T_mid);
T_start = T_mid + 1;
} else {
T_end = T_mid - 1;
}
}
System.out.println(answer);
}
public static boolean isOK(int[] arr, int T_mid, int K) {
for(int i = 0; i < arr.length; i++) {
if(arr[i] >= T_mid) continue;
else if(arr[i] < T_mid) {
K = K - (T_mid - arr[i]);
}
if(K < 0) return false;
}
return true;
}
}