import java.util.Arrays;
import java.util.Scanner;
public class DemoTest3 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
int a = in.nextInt();
in.nextLine();
int b = in.nextInt();
in.nextLine();
int[] arr = new int[a];
for(int i = 0;i<a;i++){
arr[i] = in.nextInt();
}
Arrays.sort(arr);
System.out.println(solve(a,b,arr));
}
}
private static int solve(int a, int b, int[] arr) {
int left =1,right = arr[arr.length-1];
while(left<right){
int mid = left+(right-left)/2;
if(ok(arr,b,mid)){
right = mid;
}else{
left = mid+1;
}
}
return left;
}
private static boolean ok(int[] arr, int b, int mid) {
int temp = b;
for(int i =0;i<arr.length;i++){
if (temp>arr[i]) {
temp = temp-arr[i] + mid;
}else{
return false;
}
}
return true;
}
}
华为OD机试-食堂供餐-二分法(JAVA 2025B卷)
于 2025-06-08 15:43:10 首次发布