Cod sursa(job #2668971)

Utilizator TghicaGhica Tudor Tghica Data 5 noiembrie 2020 19:28:03
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;

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

short int v[16000];

bool merg( int mas, int n, int k ) {
  int l = 0, i, s, mx;
  s = 0;
  mx = 0;
  for( i = 0; i < n; i++ ) {
    s += v[i];
    if( s > mas ) {
      l++;
      s = v[i];
    }
    if( mx < v[i] )
      mx = v[i];
  }
  if( s != 0 )
    l++;
  if( mas < mx )
    return 0;
  return l <= k;
}

int main() {
  int n, k, i, dr, st, mij;
  cin>>n>>k;
  dr = 0;
  for( i = 0; i < n; i++ ) {
    cin>>v[i];
    dr += v[i];
  }
  st = 0;
  while( dr - st > 1 ) {
    mij = dr - ( dr - st ) / 2;
    if( merg( mij, n, k ) ) {
      dr = mij;
    } else st = mij;
  }
  cout<<dr;
  return 0;
}