Cod sursa(job #489969)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 4 octombrie 2010 12:33:52
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>
FILE *f,*g;
int n,k,min,max=0,s=0,c[16001];

int main(){
	int i;
   f=fopen("transport.in","r");
   g=fopen("transport.out","w");
   
   fscanf(f,"%d %d\n",&n,&k);
   
   for(i=1;i<=n;i++) 
     {
      fscanf(f,"%d",&c[i]);
      if(c[i]>max) {max=c[i];} 
	  s+=c[i];	  
     }
   min=max; max=s;
   int m,cm,cb,nr;
   while(min<=max)
     {
       m=(min+max)/2;
	   nr=0;cm=m;
	   for(i=1;i<=n;i++)
	   {
		   while(c[i]<=cm&&i<=n)
		   {
			   cm=cm-c[i];
			   i++;
		   }
		   nr++;
		   cm=m;
		   if(i<=n)
			   i--;
	   }
	   if(nr<=k)
	   {
		   cb=m;
		   max=m-1;
	   }
	   else
		   min=m+1;
     }
    fprintf(g,"%d",cm);
return 0;
}