Pagini recente » Cod sursa (job #2848725) | Cod sursa (job #123912) | Cod sursa (job #1384079) | Cod sursa (job #1381268) | Cod sursa (job #63476)
Cod sursa(job #63476)
#include <stdio.h>
#define fin "transport.in"
#define fout "transport.out"
#define Nmax 16001
#define Cmax 956000001
int N,K,v[Nmax];
inline 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=(int) (long long)(st+dr) / 2;
if ( st>dr )
return m;
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;
}