Cod sursa(job #284395)

Utilizator ktalyn93Catalin ktalyn93 Data 21 martie 2009 18:02:25
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
int n,k,i,v[16001],s;
int cautbin(int st,int d)
{
    int m;
    while(st<d)
    {
              m=(st+d)/2;
              int nr=1,c=0,t=0;
              for(i=1;i<=n && nr<k;i++)
             { 
                          if(c+v[i]<=m)                
                          c=c+v[i];
                          else
                          {
                             nr++;
                              c=0;
                             }
                         t=t+c;
              }
              if(t==s)
               return m;
             if(t<s)
               st=m+1;
              else
              d=m; 
              }
  return m;
}
int main()
{
    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]);
                     s=s+v[i];
    }
    printf("%d",cautbin(1,s));
    return 0;
}