二分
# 华为
# 最大调用量
输入:
第一行为每个客户端的调用量;
第二行为最大允许调用量;
输出:
最大调用量阈值;
案例:
1 4 2 5 5 1 6 13 输出:2 解释:1+2+2+2+2+1+2<13
1
2
3
4
public class T1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = sc.nextLine().split(" ");
int[] arr = new int[s.length];
int sum = 0;
for(int i=0;i<s.length;i++){
arr[i] = Integer.parseInt(s[i]);
sum += arr[i];
}
int limit = sc.nextInt();
if(sum<limit){
System.out.println(-1);
return ;
}
int l=0,r=100000;
while(l<r){
int mid = l+(r-l)/2;
long t = 0;
for(int i=0;i<arr.length;i++){
t += arr[i]<mid?arr[i]:mid;
}
if(t<=limit) l = mid;
else r = mid-1;
}
System.out.println(l);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29