二分~
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n,m,i,mi,mid,ma,t,ts,a[110000];
scanf("%d%d",&n,&m);
mi=0;
ma=0;
for (i=0; i<n; i++)
{
scanf("%d",a+i);
ma+=a[i];
if (a[i] > mi)
mi=a[i];
}
while (mi < ma)
{
t=0;
ts=0;
mid=(mi+ma)>>1;
for (i=0; i<n; i++)
{
ts+=a[i];
if (ts > mid)
{
ts=a[i];
t++;
}
}
if (t >= m)
{
mi=mid+1;
}
else if (t < m)
{
ma=mid;
}
}
printf("%d\n",ma);
}