求助大佬们最后一个点WA
查看原帖
求助大佬们最后一个点WA
599059
darling020162021楼主2024/12/3 16:58
#include<iostream>
#define ll long long
using namespace std;
int n, m;
int nums[1000000] = {0};

bool valid(int x) {
	int group = 0;
	ll rest = 0;
	for (int i = 0;i < n;i++) {
		if (nums[i]+rest<=x)	rest += nums[i];
		else {
			group++;
			rest = nums[i];
		}
	}
	return group < m;
}
ll max(ll a, ll b) {
	if (a > b)	return a;
	else return b;
}
int main() {
	cin >> n >> m;
	ll maxn = 0;
	ll sum=0;
	for (int i = 0;i < n;i++) {
		cin >> nums[i];
		maxn = max(nums[i], maxn);
		sum += nums[i];
	}
	ll l = maxn, r = sum;
	while (l < r) {
		ll mid = (l + r) >> 1;
		if (valid(mid) == true)	r = mid;
		else l = mid+1;
	}
	cout << l << endl;
	return 0;
}
2024/12/3 16:58
加载中...