Cod sursa(job #1899257)

Utilizator mirceaisherebina mircea mirceaishere Data 2 martie 2017 16:54:39
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;

int v[16010];
int n, k, capacitate, t, i, maxim ,suma, crt, st, dr;

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

    fin>>n>>k;
    for (i=1;i<=n;i++) {
        fin>>v[i];
        if (v[i] > maxim)
            maxim = v[i];
        suma += v[i];
    }

    st = maxim;
    dr = suma;

    while (st <= dr) {
        // calculez cate transporturi sunt necesare cu capacitatea fixata

        capacitate = (st + dr)/2;

        crt = capacitate - v[1];
        t = 1;
        for (i=2;i<=n;i++) {
            if (v[i] <= crt) {
                crt -= v[i];
            } else {
                t++;
                crt = capacitate - v[i];
            }
        }


        if (t <= k) {
            dr = capacitate - 1;
        } else
            st = capacitate + 1;


    }

    fout<<st;


    return 0;
}