Cod sursa(job #1435040)

Utilizator greenadexIulia Harasim greenadex Data 11 mai 2015 22:06:24
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>

using namespace std;

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

int v[160001], n, k, low, high, cnt, curr, mid;

int main() {

    fin >> n >> k;
    for (int i = 1; i <= n; i++) {

        fin >> v[i];
        high += v[i];
        if (v[i] > low)
            low = v[i];
    }
    while (low <= high) {

        mid  = (high - low) / 2 + low;
        cnt = 1;
        curr = 0;

        for (int i = 1; i <= n; i++)
            if (v[i] + curr > mid) {
                cnt++;
                curr = v[i];
            } else curr += v[i];

        if (cnt > k)
            low = mid + 1;
        else high = mid - 1;
    }

    fout << mid;

    return 0;
}