Cod sursa(job #1517232)

Utilizator drobertDumitru Robert drobert Data 3 noiembrie 2015 23:20:46
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");

#define NMAX 16010

int n, k, v[NMAX], maxim, st, dr, mij, rez;

int verif(int gMax)
{
    int i, s, t;
    s = 0;
    t = 0;
    for (i = 1;i <= n + 1;i++)
    {
        if (s + v[i] <= gMax)
        {
            s += v[i];
            continue;
        }
        t++;
        if (t > k) return 0;
        s = v[i];
    }
    return 1;
}

int main()
{
    int i, j;
    f>>n>>k;
    for (i = 1;i <= n;++i)
    {
        f>>v[i];
        if (v[i] > maxim)
            maxim = v[i];
    }
    v[n + 1] = 999999;
    if (k >= n)
    {
        g<<maxim;
        return 0;
    }
    st = maxim;
    dr = 16000;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        if (verif(mij))
        {
            dr = mij - 1;
            rez = mij;
        }
        else st = mij + 1;
    }
    g<<rez;
}