Cod sursa(job #1513526)

Utilizator mariusn01Marius Nicoli mariusn01 Data 29 octombrie 2015 17:51:36
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

using namespace std;
int v[16010], n, t, c, i, cc, nrc, sum , maxim, st, dr;
int main () {
    ifstream fin ("transport.in");
    ofstream fout("transport.out");

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

    // in cate transporturi pot duce toate saltelele cu un
    // camion de capacitate c

    st = maxim;
    dr = sum;
    while (st <= dr ) {

        int c = (st + dr)/2;

        nrc = 1;
        cc = c-v[1];
        for (i=2;i<=n;i++) {
            if (v[i] <= cc) {
                cc -= v[i];
            } else {
                nrc ++;
                cc = c-v[i];
            }
        }

        if (nrc <= t) {
            dr = c-1;
        } else
            st = c+1;

    }

    fout<<st;

}