Cod sursa(job #1861822)

Utilizator SirbuSirbu Ioan Sirbu Data 29 ianuarie 2017 12:26:19
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>
#define NMAX 16002

using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");

int v[NMAX];
int n,k;


int main()
{
  int st=0, dr=0;
  fin >> n >> k;
  for (int i=1;i<=n;i++)
  {
    fin >> v[i];
    if (v[i]>st) st=v[i];
    dr+=v[i];
  }

  int sol=0;
  while (st<=dr)
  {
    int mij=(st+dr)/2;
    int volum=0;
    int transporturi=1;
    for (int i=1;i<=n;i++)
    {
      if (v[i]+volum>mij) {volum=0; transporturi++;}
      volum+=v[i];
    }
    if (transporturi>k) st=mij+1;
    else
    {
      sol=mij;
      dr=mij-1;
    }
  }
  fout << sol << "\n";

}