Cod sursa(job #883319)

Utilizator 2dorTudor Ciurca 2dor Data 19 februarie 2013 21:58:07
Problema Transport Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int hi, lo = 1, mid;
int i, n, t, tmax, s, v[16005];

void go() {
    t = 0;
    i = 1;
    while (i <= n) {
        s = 0;
        while (s < mid && i <= n) {
            s += v[i];
            ++i;
        }
        if (s > mid)
            --i;
        ++t;
    }
}

int binarySearch() {
    hi = 500;
    while (lo <= hi) {
        mid = lo + (hi - lo) / 2;
        go();
        if (t <= tmax)
            hi = mid - 1;
        else
            lo = mid + 1;
    }
    if (t > tmax)
        return mid + 1;
    return mid;
}

int main() {
    fin >> n >> tmax;
    for (i = 1; i <= n; ++i)
        fin >> v[i];
    fout << binarySearch();
    return 0;
}