#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
int main()
{
long long w[10010]={};
long long left=0,right=0;
long long n,m;
cin>>n>>m;
for (int i=1;i<=n;i++)
{
scanf("%lld",&w[i]);
if (w[i]>left)
left=w[i];
right+=w[i];
}
while (left!=right)
{
long long tmp=(left+right)/2;
long long i=1,j=0,k=1,c=1;
while (k<=n && c==1)
{
if (j+w[k]<=tmp)
{
j=j+w[k];
k++;
}
else
{
k++;
j=w[k];
i++;
}
if (i>m)
c=0;
}
if (c==1)
right=tmp;
else
left=tmp+1;
}
cout<<left;
// system("pause");
return 0;
}
wa:0
求找错。。。谢谢