Cod sursa(job #1761752)

Utilizator AhileGigel Frone Ahile Data 22 septembrie 2016 20:16:22
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<bits/stdc++.h>
using namespace std;
#define in f
#define out g

ifstream f("transport.in");
ofstream g("transport.out");

int const inf = 1000000;
int n;
int k;
int v[16010];
int result;
int maxx;

int valid(int x) {

    int drum = 1;
    int aux = x;
    for(int i = 1; i <= n; ++i) {
        if(aux >= v[i]) {
            aux -= v[i];
        } else {
            aux = x - v[i];
            drum++;
        }
    }
    if(drum <= k) {
        return true;
    } else {
        return false;
    }
}

int binsearch(int start, int fin) {

    int mid = (fin + start) / 2;
    while(fin - start > 1) {
        mid = (fin + start) / 2;
        if(valid(mid)) {
            fin = mid;
        } else {
            start = mid;
        }
    }
    return mid;

}

int main() {

    in >> n;
    in >> k;

    for(int i = 1; i <= n; ++i) {
        in >> v[i];
        maxx = max(maxx, v[i]);
    }
    out << binsearch(0, inf);

}