疑问
查看原帖
疑问
1011579
jess1ca1o0g3楼主2023/8/4 09:30
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
long long tree[1000005],n,m,l=1,r=-1,mid,ans;;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>tree[i];
		r = max(tree[i],r);
	}
	while(l<=r){
		ans = 0;
		mid = (l+r)/2;
		for(int i=1;i<=n;i++){
			if(tree[i]>mid) ans+=tree[i]-mid;
		}
		if(ans<m) r = mid-1;
		else l = mid+1;
 	}
	cout<<l-1;
	return 0;
}

这是我对了的代码,但是为什么22行不是mid呢?

还有能否将输出放进循环里来减少时间呢?

求大神解惑。

2023/8/4 09:30
加载中...