Cod sursa(job #2659833)

Utilizator Asgari_ArminArmin Asgari Asgari_Armin Data 17 octombrie 2020 16:09:17
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>

using namespace std;

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

const int NMAX = 16000;
int v[NMAX + 1];

bool verif( int n, int k, int med ){
  int i, s, cnt;
  s = cnt = 0;
  for( i = 0; i < n; ++i ){
    s += v[i];
    if( s > med ){
      s = v[i];
      ++cnt;
    }
  }
  return ((cnt + (s > 0)) <= k);
}

int main() {
  int n, k, st, dr, med, s, i;
  fin >> n >> k;
  s = 0;
  for( i = 0; i < n; ++i ){
    fin >> v[i];
    s += v[i];
  }
  st = 0; dr = s;
  while( dr - st > 1 ){
    med = (st + dr) >> 1;
    if( verif(n, k, med) == 0 )
      st = med;
    else
      dr = med;
  }
  fout << dr;
  return 0;
}