#include<bits/stdc++.h>
using namespace std;
long long a[1000001];
long long n,m,maxn=0;
bool check(int h){
	long long cd=0;
	for(int i=1;i<=n;i++){
		if((a[i]-h)>0){
			cd+=a[i]-h;
		}
	}
	return cd>=m;
}
void f(){
	double l=0,r=maxn;
	double mid;
	while(l<r){
		mid=(r+l)/2;
		if(check(mid)){
			l=mid+0.0000001;
		}
		else{
			r=mid-0.0000001;
		}
	}
	cout<<int(mid)-1;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
    	cin>>a[i];
    	if(a[i]>maxn){
    		maxn=a[i];
		}
	}
	f();
}

1 comments

  • @ 2024-2-28 15:42:56

    想法还挺不错的,但不算正解。

    • 1

    Information

    ID
    998
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    8
    Tags
    # Submissions
    223
    Accepted
    31
    Uploaded By