Cod sursa(job #2100378)

Utilizator mihaistamatescuMihai Stamatescu mihaistamatescu Data 5 ianuarie 2018 16:06:21
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#define DIM 16002
using namespace std;
int v[DIM];
int n, k, maxim, i, cap, cc, t, suma, st, dr;

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

    fin>>n>>k;
    maxim = -1;
    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) {
        /// numar cate transporturi as face cu un camion de capacitate cap

        int mid = (st + dr)/2;

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

        if (t <= k)
            dr = mid-1;
        else
            st = mid+1;
    }
    fout<<st;
}