求助
用的C++ 二分算法
第一个样例答案是对的 但是第二个就过不去了 肯定需要优化 求大佬指点
#include<bits/stdc++.h>
using namespace std;
int n,m,i,k,a[100001],mid;
int ss(int z1,int z2)
{
k=0;
mid=(z1+z2)/2;
for(i=1;i<=n;i++)
if(a[i]>mid) k=k+a[i]-mid;
if(k>m) ss(z1,mid);
if(k<m) ss(mid,z2);
if(k==m) return mid;
}
int main()
{
cin>>n>>m;
for(i=1;i<=n;i++)
cin>>a[i];
sort(a,a+n+1);
cout<<ss(a[1],a[n]);
return 0;
}