1 solutions

  • 1
    @ 2024-12-14 21:46:26
    #include <bits/stdc++.h>
    using namespace std;
    int n,m,a[1000001],l = 0,r = -1,ans = -1;
    bool check(int x){
    	long long sum = 0;
    	for(int i = 1;i<=n;i++)sum+=max(0,a[i]-x);
    	return sum>=m;
    }
    int main() {
    	scanf("%d%d",&n,&m);
    	for(int i = 1;i<=n;i++){
    		scanf("%d",&a[i]);
    		r = max(r,a[i]);
    	}
    	while(l<=r){
    		int mid = l+(r-l)/2;
    		if(check(mid)){
    			ans = mid;
    			l = mid+1;
    		}
    		else r = mid-1;
    	}
    	printf("%d",ans);
    	return 0;
    }
    
    • 1

    Information

    ID
    668
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    (None)
    # Submissions
    2
    Accepted
    2
    Uploaded By