Pagini recente » Cod sursa (job #1530235) | Cod sursa (job #350784) | Cod sursa (job #1496295) | Cod sursa (job #574314) | Cod sursa (job #611846)
Cod sursa(job #611846)
#include <stdio.h>
#define NMax 16010
const char IN[]="transport.in",OUT[]="transport.out";
int N,K;
int a[NMax];
bool test(int x)
{
int i,ct=1,sum=0;
for (i=0;i<N;++i)
{
if ( sum+a[i]<=x )
sum+=a[i];
else
++ct,sum=a[i];
}
return ct<=K;
}
int search(int L)
{
int i,step;
for (step=1;step<L;step<<=1);
for (i=L;step;step>>=1)
if (i-step>=0 && test(i-step))
i-=step;
return i;
}
int main()
{
int i,sum=0;
freopen(IN,"r",stdin);
scanf("%d%d",&N,&K);
for (i=0;i<N;++i) scanf("%d",a+i),sum+=a[i];
fclose(stdin);
freopen(OUT,"w",stdout);
printf("%d\n",search(sum));
fclose(stdout);
return 0;
}