#include<iostream>
#include<algorithm>
using namespace std;
int n,m,a[1000005],cnt,l,r;
bool cmp(int u,int v){
return u>v;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
r=max(r,a[i]);
}
sort(a+1,a+1+n,cmp);
// for(int i=1;i<=n;i++)cout<<a[i]<<" ";
l=0;
while(l<=r){
int mid=l+(r-l)/2;
long long s=0;
for(int i=1;i<=n;i++){
if(a[i]>mid)s+=a[i]-mid;
else break;
}
if(s>m)l=mid+1;
else if(s<m)r=mid-1;
else {
cout<<mid;
return 0;
}
}
cout<<r;
}
当修改while使用左闭右开时while(l<r){
int mid=l+(r-l)/2;
long long s=0;
for(int i=1;i<=n;i++){
if(a[i]>mid)s+=a[i]-mid;
else break;
}
if(s>m)l=mid+1;
else if(s<m)r=mid;
else {
cout<<mid;
return 0;
}
} 输出就不对了为什么,是不能使用左闭右开吗