Cod sursa(job #316418)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 19 mai 2009 16:11:50
Problema Transport Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.61 kb
#include <stdio.h>
#define N 16001
int s[N],n,k;
int ok(int m)
{int i,j,l;
 for (i=0,j=0,l=1;i<n;i++)
 {if(j+s[i]>m)
  {j=s[i];
   l++;
   if(l>k)
   return 0;
  }
  else
  {j+=s[i];
  }
 }
 return 1;
}
int cautare(int st,int dr)
{int s,d;
 s=st;d=dr;
 while(s!=d)
 {if(ok((s+d)/2))
  {d=(s+d)/2;
  }
  else
  {s=(s+d)/2+1;
  }
 }
 return s;
}
int main ()
{int e,i;
 freopen("transport.in","r",stdin);
 freopen("transport.out","w",stdout);
 scanf("%d %d",&n,&k);
 for (i=0,e=0;i<n;i++)
 {scanf("%d",&s[i]);
  e+=s[i];
 }
  e/=k;
  printf("%d",cautare(1,10*e));
 return 0;
}