Cod sursa(job #1436011)

Utilizator TimoteiCopaciu Timotei Timotei Data 14 mai 2015 21:32:15
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include<fstream>

using namespace std;
int n,ture,sMom,kMom,mx,limS,limD,mij,sumMax,v[16005];
int main()
{
  ifstream f("transport.in");
  ofstream g("transport.out");
  f>>n>>ture;
  for(int i=1;i<=n;i++)
  {
      f>>v[i];
      if(v[i]>mx)mx=v[i];
      sumMax+=v[i];
  }
    limS=mx-1;
    limD=sumMax+1;
    while(limD-limS>1)
    {
        mij=(limD+limS)/2;
        sMom=0;
        kMom=0;
        for(int i=1;i<=n;i++)
        {
            sMom+=v[i];
            if(sMom>mij)
            {
                kMom++;
                sMom=v[i];

            }
            if(i==n)kMom++;

        }
        if(kMom<=ture)limD=mij;
        else limS=mij;
    }
      sMom=0;
        kMom=0;
        for(int i=1;i<=n;i++)
        {
            sMom+=v[i];
            if(sMom>mij)
            {
                kMom++;
                sMom=v[i];

            }
            if(i==n)kMom++;

        }
        if(kMom==ture)
        {
            sMom=0;
        kMom=0;
        for(int i=1;i<=n;i++)
        {
            sMom+=v[i];
            if(sMom>mij-1)
            {
                kMom++;
                sMom=v[i];

            }
            if(i==n)kMom++;

        }
        if(kMom==ture)g<<mij-1;
        else g<<mij;
        }
        else g<<++mij;


  return 0;
}