Cod sursa(job #1443987)

Utilizator GeiGeiGeorge Cioroiu GeiGei Data 29 mai 2015 02:38:10
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
//0115
#include <cstdio>

int main() {
    FILE* fi = fopen("transport.in", "rt");
    FILE* fo = fopen("transport.out", "wt");

    long n, k, v[16010];

    fscanf(fi, "%ld%ld", &n, &k);
    long st = 0, dr = 0;

    for (int i = 0; i < n; i++) {
        fscanf(fi,  "%ld", &v[i]);
        dr +=v[i];
        if (v[i] > st) {
            st = v[i];
        }
    }

    while (st + 1 != dr) {
        long mij = (st + dr) / 2;
        long vm = 0;
        long aux = mij;
        for (int i = 0 ; i < n; i++) {
            if (v[i] > aux) {
                aux = mij;
                vm++;
            }
            aux -= v[i];
        }
        if (vm >= k) {
            st = mij;
        } else {
            dr = mij;
        }
    }

    fprintf(fo, "%ld", st + 1);

    return 0;
}