Cod sursa(job #2528004)

Utilizator iancupoppPopp Iancu Alexandru iancupopp Data 21 ianuarie 2020 11:23:50
Problema Transport Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>

using namespace std;

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

const int VM = 1000000;
int v [VM + 1], maxs;

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

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

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