就对了第四个!
#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;
}