Cod sursa(job #95498)

Utilizator mihai0110Bivol Mihai mihai0110 Data 29 octombrie 2007 09:02:10
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#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;
}