https://www.acmicpc.net/problem/2512
package practice30_1;
import java.util.Scanner;
public class Practice30_1 {//백준 2512번
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); //지방의 수
//int M = sc.nextInt(); // 블루레이 개수
int[]A = new int[N]; //각 지방 필요 예산 저장 배열
int start = 0;
int end = 0;
for(int i = 0; i < N; i++) {
A[i] = sc.nextInt();
if(end < A[i])
end = A[i];
}
int M = sc.nextInt(); //총 예산안
while(start <= end) {
int mid = (start + end) / 2;
long sum = 0; //budget
for(int i = 0; i < N; i++) {
if(A[i] > mid) {
sum += mid;
}else
sum += A[i];
}
if(sum <= M)
start = mid + 1; //
else
end = mid - 1;
}
System.out.println(end);
sc.close();
}
}