Cod sursa(job #1583859)

Utilizator geo_furduifurdui geo geo_furdui Data 29 ianuarie 2016 14:20:48
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <fstream>

using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int v[16010];
int main()
{
    int i,s=0,maxim=16001,n,st,dr,mij,s1=0,k;
     f>>n>>k;
     for(i=1;i<=n;i++) f>>v[i];
     st=1;
     dr=16000;
      while(st<=dr)
      {
          mij=(st+dr)/2; s=0; s1=1;
          for(i=1;i<=n;i++) { if(v[i]>mij)
            {s1=160001;break;} if(s+v[i]<=mij) s+=v[i]; else s1++,s=v[i];  }
          if(s1<=k)
          { if(mij<maxim) maxim=mij;
              dr=mij-1;
          }
          else
          {
              st=mij+1;
          }
      }
      g<<maxim;
     f.close();
     g.close();
    return 0;
}