#include<bits/stdc++.h>
#define smc 0
using namespace std;
long long tre[1000001];
long long n;
long long bsearch(long long x){
long long l = 1,r = 1000000001;
long long h;
while(l < r){
long long mid = l + (r - l) / 2;
h = 0;
for(long long i = 1;i <= n;i++){
if(mid <= tre[i]) h += (tre[i] - mid);
#if smc == 2
cout<<"h:"<<h<<" ";
#endif
}
#if smc == 1
cout<<"h:"<<h<<" ";
#endif
if(h == x) return mid;
else if(h < x) r = mid;
else l = mid+1;
}
return -1;
}
int main()
{
long long m; cin>>n>>m;
for(long long i = 1;i <= n;i++) cin>> tre[i];
cout<<bsearch(m);
return 0;
}
只AC了样例1
样例2下载下来了,但是特别长,测不了,看别的讨论是开long long,但是开long long 也全WA了,求助QAQ