Cod sursa(job #559993)

Utilizator alexamiu2008Miu Alexandra alexamiu2008 Data 18 martie 2011 11:38:56
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>
FILE*fin,*fout;
long int v[16001],i,j,n,m,k,p,u,nr,c,min,max,s;
int main(){

fin=fopen("trans.in","r");
fout=fopen("trans.out","w");
fscanf(fin,"%ld %ld",&n,&k);
for(i=1;i<=n;i++){
fscanf(fin,"%ld",&v[i]);
j=j+v[i];
if(v[i]>max){max=v[i];}
}
p=max;
u=j;

min=16001;
while(p<=u){
m=(p+u)/2;
      nr=0;
      for(i=1;i<=n;){
      s=0;
	while(s+v[i]<=m&&i<=n){
	s=s+v[i];
	i++;}
	nr++;


      }

  if(nr>k){p=m+1;}
      else
      if(nr<=k){
      min=m;
	u=m-1;

      }
}
fprintf(fout,"%ld",min);
fclose(fin);
fclose(fout);

return 0;
}