Pagini recente » Cod sursa (job #256972) | Cod sursa (job #1246210) | Cod sursa (job #1150740) | Cod sursa (job #396576) | Cod sursa (job #244017)
Cod sursa(job #244017)
#include<stdio.h>
FILE*f,*g;
long i,nrtr,n,k,s,d,cap,sol,a[16000];
int nrtrans(int cap)
{
int nr=1,s=cap,i;
for(i=1;i<=n;i++)
if(s-a[i]>=0)
s-=a[i];
else
{
nr++;
s=cap-a[i];
}
return nr;
}
int main(void)
{
f=fopen("transport.in","r");
g=fopen("transport.out","w");
fscanf(f,"%ld%ld",&n,&k);
for(i=1;i<=n;i++)
{
fscanf(f,"%ld",&a[i]);
if(a[i]>s)
s=a[i];
d+=a[i];
}
d+=1;
while(s<=d)
{
cap=(s+d)/2;
nrtr=nrtrans(cap);
if(nrtr>k)
s=cap+1;
else
{
if(sol>cap||sol==0)
sol=cap;
d=cap-1;
}
}
fprintf(g,"%ld\n",sol);
fclose(f);
fclose(g);
return 0;
}