Cod sursa(job #2526945)

Utilizator iancupoppPopp Iancu Alexandru iancupopp Data 19 ianuarie 2020 13:15:48
Problema Transport Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

ifstream in ("transport.in");
ofstream out ("transport.out");

const long long VM = 16000;
long long v [VM + 1], maxs;

long long transporturi (long long x, long long k, long long n) {
  long long s, t;
  s = 0; t = 1;
  for (long long i = 1; i <= n; i ++) {
    s += v [i];
    if (s > x) {
      s = v [i];
      t ++;
    }
  }
  return t;
}

long long cbin (long long n, long long k) {
  long long st, dr, m;
  st = maxs; dr = VM;
  while (st < dr) {
    m = (st + dr) / 2;
    if (transporturi (m, k, n) <= k)
      dr = m;
    else
      st = m + 1;
  }
  return st;
}

int main() {
  long long n, k, r;
  in >> n >> k;
  maxs = 0;
  for (long long i = 1; i <= n; i ++) {
    in >> v [i];
    maxs = max (maxs, v [i]);
  }
  r = cbin (n, k);
  out << r;
  return 0;
}