Cod sursa(job #234799)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 21 decembrie 2008 23:51:24
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
# include <stdio.h>
int N,K,V[16001];
int greedy(int x)
{
 int i,j=1,s=0;
 for (i=1;i<=N;++i)
   if (s+V[i]<=x) s+=V[i];
	     else {j++; s=V[i];}
   return j;
}
int BS(int i, int j)
{
  int m,sol=0;

  while(i<=j){
   m=i+(j-i)/2;
   if (greedy(m)<=K) sol=m, j=m-1;
     else i=m+1;
  }
  return sol;
}
int main(){
  int i,max,S=0;
  freopen("transport.in", "r", stdin);
  freopen("transport.out", "w", stdout);
  scanf("%d %d",&N,&K);
  for (i=1;i<=N;++i){
   scanf("%d",&V[i]);
   if (max<V[i]) max=V[i];
   S+=V[i];
  }
  printf("%d",BS(max,S));
  return 0;
}