#include<iostream>
#include<algorithm>
using namespace std;
long long m,n;
long long l,h;
long long lenth[1000010]={0};
bool cmp(long long a,long long b){
return a<b;
}
long long len(long long lenth[1000010],long long x){
long long sum=0;
for(int i=0;i<n;i++)
{
if(lenth[i]<=x)continue;
else sum+=lenth[i]-x;
}
return sum;
}
int main()
{
scanf("%lld %lld",&n,&m);
for(int i=0;i<n;i++){
scanf("%lld",&lenth[i]);
}
sort(lenth,lenth+n,cmp);
l=0;h=lenth[n-1]+1;
while(1){
if(l+1==h){
long long dl=len(lenth,l);
printf("%lld",dl==m?l:h);
break;
}
long long mid=(l+h)/2;
long long d=len(lenth,mid);
if(d==m){
printf("%lld",mid);break;
}
else if(d>m)l=mid;
else h=mid;
}
return 0;
}
两个样例结果都对 但是10分。。求大佬帮助