Cod sursa(job #709740)
#include <cstdio>
using namespace std;
#define DIM 16005
int n,k,max,sum,sol;
int a[DIM];
void read ()
{
int i;
scanf ("%d%d",&n,&k);
for (i=1; i<=n; ++i)
{
scanf ("%d",&a[i]);
if (a[i]>max)
max=a[i];
sum+=a[i];
}
}
void solve ()
{
int ls=max,ld=sum,mijloc,nr,s,i;
while(ls<=ld)
{
mijloc=(ls+ld)>>1;
s=nr=0;
for(i=1;i<=n;++i)
{
s+=a[i];
if(s>mijloc)
{
s=a[i];
++nr;
}
}
++nr;
if(nr>k)
ls=mijloc+1;
else
{
sol=mijloc;
ld=mijloc-1;
}
}
}
int main ()
{
freopen ("transport.in","r",stdin);
freopen ("transport.out","w",stdout);
read ();
solve ();
printf ("%d",sol);
return 0;
}