Cod sursa(job #1026632)

Utilizator Mr.DoomRaul Ignatus Mr.Doom Data 11 noiembrie 2013 20:17:13
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
using namespace std;

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

int n, k;
int st, dr;
int m;
int c[16001];
int nrt;
int s;

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


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