Cod sursa(job #2074428)

Utilizator cristianursacheCristian Ursache cristianursache Data 24 noiembrie 2017 16:44:41
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;

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

int L = 17;

int n, k;
int v[16001];

bool sepoate (int c)
{
    int cc = 0, nr = 0;
    for (int i = 1; i <= n; i++)
    {
        if (v[i] > cc)
        {
            nr ++;
            cc = c;
        }
        if (v[i] > cc)
            return false;
        if (nr > k)
            return false;
        cc -= v[i];
    }
    return true;
}

int cautbin (int x)
{
    int r = 0, pas = 1 << L;
    while (pas != 0)
    {
        if (!sepoate (r + pas))
            r += pas;
        pas /= 2;
    }
    return r + 1;
}

int main()
{
    in >> n >> k;
    for (int i = 1; i <= n; i++)
        in >> v[i];
    int r = cautbin ();
    return 0;
}