Cod sursa(job #2149436)

Utilizator testsursaSurseTest testsursa Data 2 martie 2018 17:15:17
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <iostream>
#include<fstream>
using namespace std;
int n,k,v[16001],i,x,mxx,vol,a,z,ls,ld,mij,sol;
ifstream f("transport.in");
ofstream g("transport.out");
int main()
{
    f>>n>>k;
    for(i=1;i<=n;i++)
        {
            f>>v[i];
            if(mxx<v[i])
                mxx=v[i];
        }

   /** do
    {
        for(z=1;z<=n;z++)
            {
                while(vol<=mxx)
                    {
                        if(v[i+1]<mxx-vol)
                        vol+=v[++i];
                a++;
                vol=0;
                z=i;
            }
        if(a>k)
            {
                mxx++;
                a=0;
                i=1;
            }
    }
    while(a<1);

      cout<<mxx;*/
      ls=mxx;
      ld=16001*16001;
      while(ls<=ld)
      {
          mij=(ls+ld)/2;
          int nrtrans=1;
          int sum=0;
          for(i=1;i<=n;i++)
          {
              if(v[i]<=mij-sum)
                sum+=v[i];
              else {nrtrans+=1;sum=v[i];}
          }
          if(nrtrans<=k)
           {
                ld=mij-1;
                sol=mij;
           }
          else ls=mij+1;
        }
    g<<sol;

    return 0;
}