Cod sursa(job #1708603)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 27 mai 2016 15:18:41
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>

int v[16005], n, k;

using namespace std;

inline int volum( int l )
{
    int i, j=1, s=0;
    for( i=1;i<=n;i++ )
        if( s+v[i]<=l )
            s+=v[i];
        else
            if( v[i]<=l )
            {
                s=v[i];
                j++;
            }
            else
                return 1;
    return j>k;
}

int main()
{
    freopen( "transport.in", "r", stdin );
    freopen( "transport.out", "w", stdout );
    int i, pas;
    scanf( "%d%d", &n, &k );
    for( i=1;i<=n;i++ )
        scanf( "%d", &v[i] );
    pas=1<<30;
    i=0;
    while( pas!=0 )
    {
        if( volum(i+pas) )
            i+=pas;
        pas/=2;
    }
    printf( "%d", i+1 );
    return 0;
}