Cod sursa(job #2863824)

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

using namespace std;

int v[16001];

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(v[i] > st)
        st = v[i];
  }
  int minc = dr;
  while(st <= dr) {
    int x = (st + dr) / 2;
    if(vrf(x, n, k) == true) {
      minc = x;
      dr = x - 1;
    }
    else
      st = x + 1;
  }
  cout << minc;
  return 0;
}