Cod sursa(job #1026757)

Utilizator techLaurentiu Avasiloaie tech Data 11 noiembrie 2013 22:37:13
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

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

int n , k , vect [16001] , i , c , nr ;
long long unsigned st = 0 , dt = 25600001 , m ;

int main()
{
    fin >> n >> k ;

    for ( i = 1 ; i <= n ; i ++ ){
        fin >> vect[i] ;

        if ( vect[i] > st ){
            st = vect[i] ;
        }
    }

    while ( st < dt ){
        nr = 1 ; c = 0 ;

        m = ( st + dt ) / 2 ;

        for ( i = 1 ; i <= n ; i ++ ){
            if ( c + vect[i] <= m ){
                c += vect[i] ;
            }
            else {
                c = vect[i] ;
                nr ++ ;
            }
        }

        if ( nr > k ){
            st = m + 1 ;
        }
        else {
            dt = m ;
        }

    }

    fout << st ;

    return 0;
}