Cod sursa(job #3364445)

Utilizator RegeleOu3433Calin V. Dragos Andrei RegeleOu3433 Data 3 septembrie 2026 15:10:58
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

const int MAXP2 = ( 1 << 27 ) , MAXN = 16e3;
int vol[MAXN];
int n , k;
bool check ( int cap ) {
    int i , sum , nrt;

    sum = 0;
    nrt = 1;
    for ( i = 0 ; i < n ; i++ ) {
        if ( vol[i] > cap )
            return 0;
        if ( sum + vol[i] > cap ) {
            sum = vol[i];
            nrt++;
        } else
            sum += vol[i];
    }
    return nrt <= k;
}
int cautbin () {
    int ans , i;

    ans = 0;
    for ( i = MAXP2 ; i > 0 ; i >>= 1 )
        if ( check ( ans + i ) == 0 )
            ans += i;

    return ans + 1;
}
int main () {
    ifstream fin ( "transport.in" );
    ofstream fout ( "transport.out" );
    int i;

    fin >> n >> k;
    for ( i = 0 ; i < n ; i++ )
        fin >> vol[i];
    fout << cautbin () << '\n';

    return 0;
}