Cod sursa(job #2188515)

Utilizator vladuteluVlad Oancea vladutelu Data 27 martie 2018 10:38:33
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>

using namespace std;

short int v[16001];
int main()
{
    ifstream in("transport.in");
    ofstream out("transport.out");
    int n, k, i, st=-1, dr=0, c;
    in>>n>>k;
    for(i = 1; i<=n; i++)
      {
        in>>v[i];
        if(v[i]>st)
          st = v[i];
        dr+=v[i];
      }
    int mid, cp, kp;
    while(st<=dr)
    {
      mid = (st + dr)/2;
      kp = 1; cp = mid;
      for(i = 1; i<=n; i++)
      {
        if(cp-v[i]>=0)
          cp-=v[i];
        else
        {
          cp = mid - v[i];
          kp++;
        }
      }
      if(kp<=k)
      {
        dr = mid - 1;
        c = mid;
      }
      else
      {
        st = mid + 1;

      }

    }
    out<<c;
    return 0;
}