Cod sursa(job #2427969)

Utilizator TudorP2006Popescu Tudor TudorP2006 Data 3 iunie 2019 10:13:40
Problema Transport Scor 80
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>

int v[16000], n, k;

int verif( int mar ){
  int nr, i, s;
  s = 0;
  nr = 0;
  for( i = 0; i < n; i++ ){
    s+= v[i];
    if(s > mar){
      s = v[i];
      nr++;
    }
  }
  nr++;
  return nr;
}

int cautBin( int s){
  int st, dr, mid, last;
  st = 1;
  dr = s;
  while ( dr > st + 1){
    mid = ( st + dr ) / 2;
    if( verif( mid ) > k )
      st = mid;
    else{
      dr = mid;
      last = mid;
    }
  }
  return last;
}

int main(){
  FILE *fin, *fout;
  fin = fopen( "transport.in", "r" );
  fout = fopen( "transport.out", "w" );

  int s, i;
  fscanf( fin, "%d%d", &n, &k );
  s = 0;
  for ( i = 0; i < n; i++ ){
    fscanf( fin, "%d", &v[i] );
    s+= v[i];
  }
  fprintf( fout, "%d", cautBin( s ) );
  return 0;
}