Cod sursa(job #559977)

Utilizator alexamiu2008Miu Alexandra alexamiu2008 Data 18 martie 2011 11:21:28
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<stdio.h>
FILE*fin,*fout;
long int v[2000],i,j,n,m,k,p,u,nr,c,min,max;
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]);
}

p=v[1];
u=v[n];
      int s=0;
min=16001;
int ok=1;
while(p<=u){
m=(p+u)/2;
      nr=0;   c=0;
	 ok=1;

      for(i=1;i<=n;){
      s=0;      c=i;
	while(s+v[i]<=m&&i<=n){
	s=s+v[i];
	i++;
	}
	nr++;

	  if(c==i){ok=0;break;}

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

      }
      if(ok==0){p=m+1;}
}

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

return 0;
}