20分求助
查看原帖
20分求助
972183
MESSI_楼主2024/8/10 20:05

就对了第四个!

#include<bits/stdc++.h>
using namespace std;
int n,m;
long long ans,minn=-2147483647,sum=1;
long long a[1000001];
bool check(int x){
	long long cnt=1,summ=0;
	for(int i=1;i<=n-1;i++){
		summ=summ+a[i];
		if(summ>x){
			cnt++;
			summ=a[i];
		}
	}
	return cnt<m;
}
int main(void){
	cin >> n >> m;
	for(int i=1;i<=n;i++){
		cin >> a[i];
		sum=sum+a[i];
		minn=max(minn,a[i]);
	}
	int l=minn,r=sum;
	while(l<=r){
		int mid=(l+r)/2;
		if(check[mid]){
			ans=mid;
			r=mid-1;
		}
		else
		{
			l=mid+1;
		}
	}
	cout << ans;
	return 0;
}
2024/8/10 20:05
加载中...