Cod sursa(job #1023894)

Utilizator japjappedulapPotra Vlad japjappedulap Data 7 noiembrie 2013 20:56:46
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
// :: BinarySearch ::
#include <fstream>
using namespace std;

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

int a[16001], n, k, cnt, st, dr = 1000000000, s, m;

void Read();
void Solve();

int main()
{
    Read();
    Solve();
    is.close();
    os.close();
    return 0;
}

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

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