20分,求助
查看原帖
20分,求助
677147
sakura_erii楼主2023/10/28 09:21
#include<bits/stdc++.h>
using namespace std;
long long a[1000000],n,m,l=0,r=0;

bool f(long long x)
{
	long long tot=0,sum=0;
	for(int i=1;i<=n;i++)
	{
		if(a[i]+sum<=x) sum+=a[i];
		else tot++,sum=a[i];
	}
	return tot<=m;
}

long long find(long long L,long long R)
{
	long long ans,mid;
	while(L<=R)
	{
		mid=(L+R)/2;
		if(f(mid)) ans=mid,R=mid-1;
		else L=mid+1;
	}
	return ans;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i],l=max(l,a[i]),r+=a[i];
	cout<<find(l,r);
	return 0;
 } 
2023/10/28 09:21
加载中...