Cod sursa(job #885529)

Utilizator muresan_bogdanMuresan Bogdan muresan_bogdan Data 22 februarie 2013 08:48:55
Problema Transport Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<iostream>
#include<fstream>
using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");
long long n, k, i, v[16010], sup = 16001 * 16000, inf = 0, mij, ok = 1;

inline bool verif(int x) {
    int s = 0, t = 0;
    i = 0;
    while((t <= k) && (i < n)) {
        s = 0;
        while((s < x) && (i <= n)) {
            s += v[i];
            ++i;
        }
        s -= v[--i];
        ++t;
    }
    if(t > k) return false;
    if(t <= k ) return true;
}

inline void binar() {
    int h;
    mij = (sup - inf)/ 2 + inf;
    h = verif(mij);
    if(h) {
        sup = mij;
    }
    else {
        inf = mij;
    }
}

int main() {
    fin >> n >> k;
    for(i = 0; i < n; ++i) {
        fin >> v[i];
    }
    while((sup - inf) > 1) {
        binar();
    }
    if(mij % 2) {
        fout << inf;
    }
    else {
        fout << mij;
    }
}