Cod sursa(job #2308968)

Utilizator ezioconnorVlad - Gabriel Iftimescu ezioconnor Data 28 decembrie 2018 09:59:29
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>

using namespace std;

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

int v[16001];

int main()
{
    int n, k, i, c, a, MAX = 0;
    long long s = 0;
    in >> n >> k;
    for (i = 1; i <= n; ++i)
    {
        in >> v[i];
        if (v[i] > MAX)
            MAX = v[i];
        s += v[i];
    }
    long long st = MAX, dr = s, mij, nrt, rez;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        s = 0;
        nrt = 1;
        for (i = 1; i <= n; ++i)
        {
            if (s + v[i] <= mij)
                s += v[i];
            else
            {
                ++nrt;
                s = v[i];
            }
        }
        if (nrt > k)
            st = mij + 1;
        else
        {
            rez = mij;
            dr = mij - 1;
        }
    }
    out << rez;
    return 0;
}