Cod sursa(job #496317)

Utilizator Gecko10Malcica Teodor Gecko10 Data 28 octombrie 2010 15:50:12
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<stdio.h>
int t,n,k,v[16010];

int transport(int c)
   { int cap=0,i,nd=0;
     for(i=1;i<=n;i++)
		 if(cap+v[i]<=c)
  			 cap=cap+v[i];
		 else
		    { nd++;
		      cap=v[i];
			}
	 if(cap>0)
 		nd++;
	 return nd;
   } 
   
int bs()
   { int st,dr,med,d,last;
     st=1;dr=t;
	 while(st<=dr)
		   { med=(st+dr)/2;
             d=transport(med);
             if(d>k)
                st=med+1;
			 else
				{ dr=med-1;
			      last=med;
				}
			}
	 return last;
	}
   
int main()
{
 freopen("transport.in","r",stdin);
 freopen("transport.out","w",stdout);
 int i;
 scanf("%d%d",&n,&k);
 for(i=1;i<=n;i++)
	 { scanf("%d",&v[i]);
       t+=v[i];
	 }  
 printf("%d\n",bs());
 return 0;
}