Cod sursa(job #2863814)

Utilizator stefanmaxStefan Maximilian stefanmax Data 7 martie 2022 11:31:02
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

int v[1601];

bool vrf(int c, int n, int t) {
  int s = 0, k = 0;
  for(int i = 0; i < n; ++i) {
    s = s + v[i];
    if(s > c) {
      s = v[i];
      ++k;
    }
  }
  ++k;
  if(k > t)
      return false;
  else
      return true;
}

int main() {

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

  return 0;
}