求助!70分#3,9,10
查看原帖
求助!70分#3,9,10
599059
darling020162021楼主2024/12/2 15:28
#include<iostream>
#include<math.h>
#include<vector>
using namespace std;
int trees[1000005] = { 0 };
int n, m;
inline int add(int a, int b) {
	if (a - b < 0)	a = 0;
	else a = a - b;
	return a;
}
inline int max(int a, int b) {
	if (a < b)	return b;
	else return a;
}
bool valid(int x) {
	int sum = 0;
	for (int i = 0;i < n;i++) {
		sum += add(trees[i], x);
	}
	return sum >= m;
}
int main() {
	cin >> n >> m;
	int maxn = trees[0];
	for (int i = 0;i < n;i++) {
		cin >> trees[i];
		maxn = max(trees[i], maxn);
	}
	int l = 0;
	while (l < maxn) {
		int mid = (l + maxn) >> 1;
		if (valid(mid) == true) l = mid+1;
		else maxn = mid;
	}
	cout << l-1;
	puts("");
	return 0;
}
2024/12/2 15:28
加载中...