Pagini recente » Cod sursa (job #861226) | Cod sursa (job #1605544) | Cod sursa (job #1416317) | Cod sursa (job #2716454) | Cod sursa (job #63474)
Cod sursa(job #63474)
#include <stdio.h>
#define fin "transport.in"
#define fout "transport.out"
#define Nmax 16001
#define Cmax 256000001
int N,K,v[Nmax];
int good(int k) {
int i,last=0,nr=1;
for (i=1;i<=N;++i)
if ( last + v[i] <= k )
last+=v[i];
else {
last=v[i];
++nr;
if (nr>K)
return 0;
}
return 1;
}
int go(int st,int dr) {
int m;
m=(st+dr)/2;
if ( good(m) )
if (!good(m-1))
return m;
else
return go(st,m-1);
else
return go(m+1,dr);
}
int main() {
int i;
freopen(fin,"r",stdin); freopen(fout,"w",stdout);
scanf("%d%d",&N,&K);
for (i=1;i<=N;++i)
scanf("%d",&v[i]);
printf("%d\n",go(1,Cmax));
return 0;
}