Cod sursa(job #2600286)

Utilizator Anakin1001George Giorgiu Gica Anakin1001 Data 12 aprilie 2020 13:22:59
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;

ifstream f ( "transport.in" );
ofstream g ( "transport.out" );

const int N = 16001;
int v[N], k, n;

bool verif ( int x ){
    int S = v[1], nr = 1;
    for ( int i = 2; i <= n; i++ ){
        if ( S + v[i] <= x )
            S += v[i];
        else{
            S = v[i];
            nr++;
            if ( nr > k )
                return 0;
        }
    }
    return 1;
}

int main()
{   int i, st, dr, sol = 0;
    f >> n >> k;
    for ( i = 1; i <= n; i++ ){
        f >> v[i];
        dr += v[i];
    }
    st = 1;
    while ( st <= dr ){
        int mid = ( st + dr ) >> 1;
        if ( verif ( mid ) == 1 ){
            sol = mid;
            dr = mid - 1;
        }
        else
            st = mid + 1;
    }
    g << sol;
    return 0;
}