Cod sursa(job #1147381)

Utilizator AlexNiuclaeNiculae Alexandru Vlad AlexNiuclae Data 19 martie 2014 19:44:16
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#define Nmax 16010

using namespace std;

int a[Nmax],n,i,s,nr,k;

bool saltea(int volum)
 {
     int s=0, nr=0;
     for (int i=1;i<=n;++i)
      {
          if (a[i]>volum) return false;
          if (s+a[i]>volum) {nr++; s=0; s+=a[i];}
           else s+=a[i];
      }
      if (s>0) nr++;
      if (nr<=k) return true;
      return false;
 }

int cb()
 {
     int mij,nra;
     int st=1, dr=s;
     while (st<=dr)
      {
         mij=(st+dr)/2;
          if (saltea(mij)) dr=mij-1, nra=mij;
           else st=mij+1;
      }
      return nra;
 }

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", &a[i]);
         s+=a[i];
     }

    printf("%d", cb());




    return 0;
}