社区讨论

开了longlong也没用 不知道为什么过不了 明明二分没问题来着[哭]

P1873[COCI 2011/2012 #5] EKO / 砍树参与者 4已保存回复 20

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
19 条
当前快照
1 份
快照标识符
@mdsdmk21
此快照首次捕获于
2025/08/01 13:22
7 个月前
此快照最后确认于
2025/11/04 06:28
4 个月前
查看原帖
#include <bits/stdc++.h>
using namespace std;
long long m,n,a[1000005];
long long l,r,mid,ans = 0;
bool check(long long mid){
	long long cmp = 0;
	for(long long i = 1;i <= n; i++){
		if(a[i] >= mid)
			cmp += a[i]-mid;
	}
	if(cmp >= m)
		return 1;
	return 0;
}
int main(){
	cin >> n >> m;
	for(long long i = 1;i <= n; i++){
		cin >> a[i];
		r += a[i];
	}
	while(l < r){
		mid = (l+r)/2;
		if(check(mid) == 1){
			ans = mid;
			l = mid+1;
		}
		else
			r = mid-1;
	}
	cout << ans;
	return 0;
} ```

回复

20 条回复,欢迎继续交流。

正在加载回复...