二分样例过不去,求大佬指点一二
查看原帖
二分样例过不去,求大佬指点一二
1281428
yueqian2013楼主2024/11/24 18:55
#include<bits/stdc++.h>
using namespace std;
int n,m,ans=-1,a[1000001]; 
bool check(int x){
	int cnt=0;
	for(int i=1;i<=n;i++){
		cnt+=a[i]-x;
		if(cnt>=m)return true;
	}
	return false;
}
int fin(int l,int r){
	int mid=(l+r)/2;
	if(l>r)return ans;
	if(check(mid)){
		ans=mid;
		return fin(mid+1,r);
	}
	else return fin(l,mid-1);
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)cin>>a[i];
	sort(a+1,a+n+1);
	cout<<fin(1,a[n]);
    return 0;
}


大佬们可不可以帮我看一下

2024/11/24 18:55
加载中...