Pagini recente » Cod sursa (job #1609986) | Cod sursa (job #1833640) | Cod sursa (job #2227543) | Cod sursa (job #895930) | Cod sursa (job #1281144)
#include <stdio.h>
int v[16001];
int main()
{
FILE *fin=fopen("transport.in","r"),*fout=fopen("transport.out","w");
int n,k,imax,lmax,lmin,i,nrt,c,l1,l2,lm,m;
imax=0;
lmax=0;
fscanf(fin,"%d%d",&n,&k);
for(i=1;i<=n;i++)
{
fscanf(fin,"%d",&v[i]);
}
for(i=1;i<=n;i++)
{
lmax+=v[i];
if(v[i]>imax)
{
imax=v[i];
}
}
lmin=imax;
l1=lmin;
l2=lmax;
while(l1<=l2)
{
c=0;
nrt=1;
m=(l1+l2)/2;
for(i=1;i<=n;i++)
{
if(c+v[i]<=m)
{
c=c+v[i];
}
else
{
nrt++;
c=v[i];
}
}
if(nrt<=k)
{
l2=m-1;
lm=m;
}
else
{
l1=m+1;
}
}
fprintf(fout,"%d",lm);
return 0;
}