Cod sursa(job #2333507)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 1 februarie 2019 11:47:52
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
/*
    * Code by
    * Andrei Arhire
    - bulfei rotofei -
*/
#include <bits/stdc++.h>
using namespace std ;
ifstream in ("transport.in") ;
ofstream out("transport.out") ;

int n , v [ 16001 ] , maxim , d , sum ;

int test ( int k )
{
    int i , nrtrucks = 1 , s = 0 ;
    for ( i = 1 ; i <= n ; ++ i )
    {
        s += v [ i ] ;
        if ( s > k )
        {
            s = v [ i ] ;
            nrtrucks ++ ;
        }
    }
    return nrtrucks ;
}

int divide ( int from , int to )
{
    if ( from == to )   return to ;

    int mid = ( from + to ) >> 1 ;

    if ( test ( mid ) <= d )    return divide ( from , mid ) ;
    else                        return divide ( mid + 1 , to ) ;

}

int main ()
{
    in >> n >> d ;
    for ( int i = 1 ; i <= n ; ++ i )
    {
        in >> v [ i ] ;
        sum += v [ i ] ;
        if ( v [ i ] > maxim )  maxim = v [ i ] ;
    }
    out << divide ( maxim , sum ) ;
    in.close() ;
    out.close() ;
    return 0 ;
}