Cod sursa(job #2219094)

Utilizator YusyBossFares Yusuf YusyBoss Data 7 iulie 2018 11:15:30
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>

using namespace std;

int v[16003];

bool ok (int mij, int n, int k) {
  int i, sum, cnt;
  sum = 0;
  cnt = 0;
  for (i = 0; i < n; i++) {
    sum += v[i];
    if (sum > mij) {
      sum = v[i];
      cnt++;
    }
  }
  if (cnt + 1 > k)
    return 0;
  else
    return 1;
}

int main() {
  ifstream cin ("transport.in");
  ofstream cout ("transport.out");
  int n, k, st, dr, mij, sol, i;
  cin >> n >> k;
  for (i = 0; i < n; i++)
    cin >> v[i];
  st = 1;
  dr = 16000 * n;
  while (st <= dr) {
    mij = (st + dr) / 2;
    if (ok(mij, n, k) == 1) {
      dr = mij - 1;
      sol = mij;
    }
    else
      st = mij + 1;
  }
  cout << sol;
  return 0;
}