Cod sursa(job #1710619)

Utilizator VasilescuVasilescu Eliza Vasilescu Data 29 mai 2016 13:45:52
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<fstream>

using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
void bs(int);

int n, k, i, sm, cmx, rasp, nrt, c, mx, v, u, t;

int l[16005];

int main(void)
{
    freopen("transport.in", "r", stdin);
    freopen("transport.out","w",stdout);

    fin>>n>>k;

    for (i = 1; i <= n; ++i)
    {
        fin>>l[i];
        sm += l[i];
        mx = l[i] > mx? l[i]: mx;
    }

    cmx = v = (sm >> 1);

    u = t = sm;
    bs(cmx);

    fout<<rasp;

    return 0;
}

void bs(int sm)
{
    int m;

    if (sm < mx)
       nrt = k + 1;
    else
    {
        for (i = 1, nrt = c = 0; i <= n && nrt <= k;)
        {
                c += l[i];

                        if (c > sm)
                        {
                            nrt++;
                            c = 0;
                        }
                        else
                            ++i;
        }
        ++nrt;
    }

    v >>= 1;

    if (nrt <= k)
    {
        u = rasp  = sm;
        m = (sm + 1) >> 1;
        if (m > 0 && m != sm)
           bs(m);
    }
    else
    {
        m = (sm + u) >> 1;
        if (m != sm)
           bs(m);
    }
}