https://qqwhale.com/problem/1786 70分代码
#include <bits/stdc++.h>
#define I using
#define AK namespace
#define IOI std
I AK IOI;
//set<int>::iterator it;
int n;
int a[100009],m,x;
int b[100009];
bool check(int mid){
int sum=a[1],i=1,d=0;
if(sum>mid){
return 0;
}
while(i<=n){
if(sum+a[++i]<=mid){
sum+=a[i];
}
else if(a[i]<=mid){
sum=a[i];
d++;
}
else{
return 0;
}
}
if(sum<=mid){
}
else if(a[i]<=mid){
sum=a[i];
d++;
}
else{
return 0;
}
return d<=m;
}
int main(){
//sand(NULL);
//if(rand()+rand()-rand()==1){
// system("start https://www.luogu.com.cn/");
//}
//iosbase::sync_with_stdio(false);
//cin.tie(NULL);
scanf("%d%d",&n,&m);
long long r=0;
x=n-m;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
r+=a[i];
}
long long l=0;
while(l<r){
long long mid=l+(r-l)/2;
if(check(mid)){
r=mid;
}
else{
l=mid+1;
}
}
printf("%lld",l);
return 0;
}
谢谢