代码如下
#include<bits/stdc++.h>
using namespace std;
const int N=2e6+10;
long long n,m;
long long a[10*N];
bool check(long long mid){
long long num=1,sum=0;
for(int i=1;i<=n;i++){
if(sum+a[i]<=mid){
sum+=a[i];
}
else{
num++;
sum=a[i];
}
}
if(num>m){
return 0;
}
else if(num<=m){
return 1;
}
}
long long erfen1(){
long long l=1;
long long r=0x3f3f3f3f3f3f3f3f;
while(l<r){
long long mid=(l+r)/2;
if(check(mid)){
r=mid;
}
else{
l=mid+1;
}
}
return r;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
long long ans;
ans=erfen1();
cout<<ans;
return 0;
}
求助各位大佬