Cod sursa(job #1553788)

Utilizator CTI_KnightCir Constantin CTI_Knight Data 20 decembrie 2015 15:19:23
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
# include <fstream>
# include <algorithm>

using namespace std;

ifstream cin ( "transport.in" );
ofstream cout ( "transport.out" );

int n, a[16005], k, mx;

int prog ( int q )
{
    int i, t, p;
    i = t = p = 0;
    while ( i < n )
    {
        if ( p + a[i] <= q )
        {
            p = p + a[i];
        }
        else
        {
            p = a[i];
            t ++;
        }
        i ++;
    }
    if ( p != 0 )
        t ++;
    return t;
}

int bsearch ( int st , int dr )
{
    int mid, s;
    while ( st <= dr )
    {
        mid = (st+dr)/2;
        s = prog ( mid );
        if ( s == k )
        {
            if ( prog ( mid - 1 ) > k )
                return mid;
            else
                dr = mid - 1;
        }
        if ( s < k )
            dr = mid - 1;
        if ( s > k )
            st = mid + 1;
    }
}

int main ()
{
    int i;

    cin >> n >> k;

    for ( i = 0 ; i < n ; i ++ )
    {
        cin >> a[i];
        if ( a[i] > mx )
            mx = a[i];
    }

    cout << bsearch ( mx, n * 16000 );
    return 0;
}