不看题解绝对想不出二分答案。。。。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include<bits/stdc++.h> 2 #define inc(i,l,r) for(i=l;i<=r;i++) 3 #define dec(i,l,r) for(i=l;i>=r;i--) 4 #define inf 1e9 5 #define mem(a) memset(a,0,sizeof(a)) 6 #define ll long long 7 #define NM 55 8 using namespace std; 9 int read(){ 10 int x=0,f=1;char ch=getchar(); 11 while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();} 12 while(isdigit(ch))x=x*10+ch-'0',ch=getchar(); 13 return x*f; 14 } 15 int a[NM],n,m,i,l,r,s; 16 int check(int x){ 17 int i,t=min(x,m); 18 inc(i,1,n) 19 if(a[i]<x){ 20 t-=x-a[i]; 21 if(t<0)return false; 22 } 23 return true; 24 } 25 int main(){ 26 n=read();m=read(); 27 inc(i,1,n)a[i]=read(); 28 l=0;r=inf; 29 while(l<=r){ 30 int t=l+r>>1; 31 if(!check(t))r=t-1; 32 else l=t+1,s=t; 33 } 34 printf("%d",s); 35 return 0; 36 }