Cod sursa(job #1958971)

Utilizator workwork work work Data 8 aprilie 2017 22:41:28
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>

using namespace std;

ifstream F("transport.in");
ofstream G("transport.out");

int n, K, v[16001], s, maxx, st, dr, mij;

int YouMayTransport(int x)
{
    int k = 0, i = 1, S;
    while(k < K && i <= n)
    {
        S = 0;
        while(S + v[i] <= x && i <= n)
            S += v[i], ++ i;
        ++ k;
    }
    if(i <= n)
        return 0;
    return 1;
}

int main()
{
    F >> n >> K;
    for(int i = 1; i <= n; ++ i)
    {
        F >> v[i];
        if(v[i] > maxx)
            maxx = v[i];
        s += v[i];
    }

    st = maxx;
    dr = s;
    while(st <= dr)
    {
        mij = st + (dr - st) / 2;
        if(YouMayTransport(mij))
            dr = mij - 1;
        else
            st = mij + 1;
    }
    G << mij;
    return 0;
}