Cod sursa(job #2218793)

Utilizator mirunazMiruna Zavelca mirunaz Data 5 iulie 2018 19:57:26
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
using namespace std;

int v[16001], n, k;

bool verif (int val)
{
    int l = 0, h = k;
    for (int i=1; i<=n; i++){
        l += v[i];
        if (v[i] > val){
            return 0;
        }
        if (l > val){
            l = v[i];
            h --;
        }
        if (h == 0){
            return 0;
        }
    }

    return 1;
}

int cautare_binara (int start, int fin)
{
    while (start < fin){
        int mid = (start + fin) /2;
        if (verif(mid) == 0){
            start = mid + 1;
        }
        else{
            fin = mid;
        }
    }

    return start;
}

int main ()
{
    ifstream in ("transport.in");
    ofstream out ("transport.out");

    int sum = 0;

    in >> n >> k;

    for (int i=1; i<=n; i++){
        in >> v[i];
        sum += v[i];
    }

    out << cautare_binara(1, sum);

    return 0;
}