Cod sursa(job #2281570)

Utilizator braresBirzaneanu Rares brares Data 12 noiembrie 2018 15:00:44
Problema Transport Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>

using namespace std;

int v[16001]; /// capacitatile saltelelor
int n, maxim, suma, i, k, tr, cap, ramas;

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

int main () {
    fin>>n>>k;
    for (i=1;i<=n;i++) {
        fin>>v[i];
        suma += v[i];
        if (v[i] > maxim)
            maxim = v[i];
    }
/// 16000 * 16000 suma numerelor deci pana aici poate merge cap
/// la fiecare astfel de pas am verificarea cu n pasi adica 16000
/// in total 16000 ^ 3
    for (cap = maxim; cap <= suma; cap++) {
        /// numar cate transporturi fac sa duc totul cu un camion de capacitate cap
        tr = 1; /// ramas = cat mai pot incarca in trasportul curent
        ramas = cap - v[1]; /// am incarcat prima saltea
        for (i=2;i<=n;i++)
            if (v[i] <= ramas)
                ramas -= v[i];
            else {
                tr++;
                ramas = cap-v[i];
            }

        if (tr <= k) {
            fout<<cap;
            return 0;
        }

    }

    return 0;
}