Cod sursa(job #2274714)

Utilizator AlmaChan13Petria Mitran Alma Elena AlmaChan13 Data 2 noiembrie 2018 12:58:26
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,i,j,v[17000];
long long t,transporturi,incarcat,maxim, capacitate, sumaTotala, st, dr;
int main () {
    fin>>n>>k;
    for (i=1;i<=n;i++) {
        fin>>v[i];
        sumaTotala += v[i];
        if (v[i]>maxim)
            maxim=v[i];
    }

    st = maxim;
    dr = sumaTotala;

    while(st <= dr) {
        int capacitate = (st + dr)/2;
        transporturi=1;
        incarcat=0;
        for (i=1;i<=n;i++) {
            incarcat+=v[i];
            if (incarcat>capacitate) {
                incarcat=v[i];
                transporturi++;
            }
        }
        if (transporturi<=k) {
            dr = capacitate-1;
        } else
            st = capacitate+1;
    }
    fout<<st;
/*

    for (capacitate=maxim; ;capacitate++) {
        transporturi=1;
        incarcat=0;
        for (i=1;i<=n;i++) {
            incarcat+=v[i];
            if (incarcat>capacitate) {
                incarcat=v[i];
                transporturi++;
            }
        }
        if (transporturi<=k) {
            fout<<capacitate;
            return 0;
        }
    }
*/
}
/*
k = 4

capacitate   1    2  3  4  5  6  7 8   9 10 11 12 13 14 15 16 17
transporturi NU  30 30 28 27 24 20 20 19 18 16 16 10  8 4 3 1  1
*/