Cod sursa(job #1024639)

Utilizator Corina1997Todoran Ana-Corina Corina1997 Data 8 noiembrie 2013 21:50:33
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
using namespace std;

ifstream is("transport.in");
ofstream os("transport.out");

int a[16001], n, k;
int st, dr = 256000000, s, aux, m;

int main()
{
    is >> n >> k;
    for ( int i = 1; i <= n; i++ )
    {
        is >> a[i];
        if ( a[i] > st )
            st = a[i];
    }

    while( st < dr )
    {
        s = 0;
        aux = 1;
        m = ( dr + st ) / 2;
        for ( int i = 1; i <= n; i++ )
            if ( s + a[i] <= m )
                s += a[i];
            else
            {
                s = a[i];
                aux++;
            }
        if ( aux > k )
            st = m + 1;
        else
            dr = m;
    }
    os << st;

    is.close();
    os.close();
    return 0;
}