Cod sursa(job #2660773)

Utilizator AlexNicuNicu Alexandru AlexNicu Data 20 octombrie 2020 14:57:01
Problema Transport Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>

using namespace std;
ifstream cin ( "transport.in" );
ofstream cout ( "transport.out" );
int v[16000];
bool verif ( int k, int n, int summax ) {
  int i, sum;
  sum = 0;
  for ( i = 1; i <= n; i++ ) {
      sum += v[i];
      if ( sum > summax ) {
         k--;
         if ( k < 0 )
          return 0;
        sum = 0;
        i--;
      }
      else if ( sum == summax ) {
         k--;
         if ( k < 0 )
          return 0;
         sum = 0;
      }
  }
  if ( sum >= 0 ) {
      k--;
      if ( k < 0 )
        return 0;
  }
  return 1;
}
int main()
{
    int n, k, st, dr, i, mij;
    cin >> n >> k;
    dr = 0;
    for ( i = 1; i <= n; i++ ) {
      cin >> v[i];
      dr += v[i];
    }
    st = 1;
    while ( st < dr ) {
        mij = (st + dr) / 2;
        if ( verif( k, n, mij ) )
          dr = mij;
        else
          st = mij + 1;
    }
    cout << st;
    cin.close();
    cout.close();
    return 0;
}