Cod sursa(job #1319704)

Utilizator andy1207Cioltan Andrei andy1207 Data 17 ianuarie 2015 12:49:58
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<cstdio>
int v[16001];
int main()
{
 int n,k,i,s,max1,min,max,q,pp,t;
 freopen("transport.in","r",stdin);
 freopen("transport.out","w",stdout);
 scanf("%d%d",&n,&k);
 s=0;
 max1=0;
 for(i=1;i<=n;i++)
    {
     scanf("%d",&v[i]);
     if(v[i]>max1)
       max1=v[i];
     s+=v[i];
    }
 min=max1;
 max=s;
 pp=0;
 while(pp==0)
      {
       q=(max-min)/2;
       if(q%2==1)
          q++;
       s=0;
       t=1;
       for(i=1;i<=n;i++)
          {
           if(s+v[i]<=q)
               s+=v[i];
           else
              {
               s=v[i];
               t++;
              }
          }
       if(t<k)
          {
           max=q;
          }
       else
          {
           if(t>k)
              {
               min=q;
              }
           else
              {
               pp=1;
              }
          }
      }
 printf("%d\n",q);
return 0;
}