Pagini recente » Cod sursa (job #1039141) | Cod sursa (job #1394974) | Cod sursa (job #510571) | Cod sursa (job #2232746) | Cod sursa (job #611847)
Cod sursa(job #611847)
#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 (a[i]>x) return false;
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;
}