Cod sursa(job #1041555)

Utilizator DanielSanduSandu Daniel DanielSandu Data 25 noiembrie 2013 22:09:44
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <vector>
std::ifstream in("transport.in");
std::ofstream out("transport.out");

bool capacitateValida(std::vector<int> &v, int c, int k) {
    int pas = v.size() - 1;
    int pos = 0;
    int offset = 0;
    int t = 0;
    while (t <= k && pos != v.size() - 1) {
        while (pas = (pas / 2))
            if (pas + pos < v.size() && c >= v[pas + pos] - offset)
                pos += pas;
        if (c < v[pos] - offset) return false;
        offset = v[pos++];
        ++t;
        pas = v.size() - pos - 1;
    }
    if (t <= k) return true;
    return false;
}

int main()
{
    int n, k, aux = 0, pos = 0, pas, minC;
    in>>n>>k;
    std::vector<int> sP;
    sP.reserve(n);
    while(in>>n) {
        aux += n;
        sP.push_back(aux);
    }
    pas = minC = sP.back() * 2;
    while (pas = (pas / 2))
        if (pas + pos <= sP.back() && !capacitateValida(sP, pas, k))
            pos += pas;
    minC = pos;
    out<<minC;
}