Cod sursa(job #2384277)

Utilizator stoicaandreiStoica Marius-Andrei stoicaandrei Data 20 martie 2019 16:19:04
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

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

const int N_MAX = 16003;

int n, k;
int a[N_MAX];
int st, dr;
int result;

void read()
{
  fin >> n >> k;
  for (int i = 0; i < n; i ++)
  {
    fin >> a[i];
    if (a[i] > st)
      st = a[i];
    dr += a[i];
  }
}

void solve()
{
  while (dr > st)
  {
    int mij = (dr + st) / 2;
    int steps = 0;
    int sum = 0;

    for (int i = 0; i < n; i ++)
      if (sum + a[i] > mij)
      {
        steps ++;
        sum = 0;
      } else sum += a[i];

    if (steps > k)
      st ++;
    else
    {
      result = mij;
      dr --;
    }
  }
}

int main() {
  read();
  solve();
  fout << result + 1;
}