20分蒟蒻求助!(只过了#4)
查看原帖
20分蒟蒻求助!(只过了#4)
592897
GrainRain25楼主2022/12/4 21:49
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100000005];
bool p(int x){
	int tot=0;
	int now=0;
	for(int i=1;i<=n;i++){
		if(now+a[i]<=x)
			now+=a[i];
		else{
			tot++;
			now=a[i];
			//continue;
		}
	}
	return tot<=m;
}
int s(int l,int r){
	int mid,ans=0;
	while(l<=r){
		mid=(l+r)/2;
		if(p(mid)){
			r=mid-1;
			ans=mid;
		}
		else l=mid+1;
	}
	return l;
}
int main(){
	int l=0,r=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		l=max(l,a[i]);
		r+=a[i];
	}
	cout<<s(l,r)<<endl;
	return 0;
}
2022/12/4 21:49
加载中...