弱弱的问一句:while(left<=right)的<和<=有何区别?
查看原帖
弱弱的问一句:while(left<=right)的<和<=有何区别?
498262
小叶枫ovo楼主2022/7/28 22:18

<=满分,< WA3个点 dalao们二分题中如何选择<和<=?

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int dd=1e6+5;
int a[dd];
signed main(){
	int n,m;
	cin>>n>>m;
	int maxx=-1,minn=1e9;
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		maxx=max(maxx,a[i]);
		minn=min(minn,a[i]);
	}
	int h,sum=0;
	int left=minn,right=maxx;
	while(left<=right){
		int mid=(left+right)/2;
		sum=0;
		for(int i=1;i<=n;i++){
			if(mid<a[i]){
				sum+=a[i]-mid;
			}
		}
		if(sum<m){
			right=mid-1;
		}
		else {
			h=mid;
			left=mid+1;
		}
	}
	cout<<h;
}
2022/7/28 22:18
加载中...