Cod sursa(job #2299511)

Utilizator MaxTeoTeo Oprescu MaxTeo Data 9 decembrie 2018 17:39:05
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>
using namespace std;

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

const int MAX = 16005;

int n, k;
int v[MAX];

void Read()
{
    f >> n >> k;
    for(int i = 1; i <= n; ++i)
        f >> v[i];
}

bool Check(int capacity)
{
    int sum = 0, cargos = 1;

    for(int i = 1; i <= n; ++i)
    {
        if(v[i] > capacity)
            return false;

        if(v[i] + sum <= capacity)
            sum += v[i];
        else
        {
            sum = v[i];
            ++cargos;
            if(cargos > k)
                return false;
        }
    }
    return true;
}

int Binary_Search()
{
    int r = 0;

    for(int pas = 1 << 30; pas; pas >>= 1)
        if(Check(r + pas) == false)
            r += pas;

    return r + 1;
}

int main()
{
    Read();
    g << Binary_Search();

    return 0;
}