Cod sursa(job #1592189)

Utilizator razvandRazvan Dumitru razvand Data 7 februarie 2016 10:38:11
Problema Transport Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int v[16003];
int n,k;

bool verif(int V, int st, int am) {
    int cap = 0;
    if(st >= n && am == k)
        return 1;
    if(am > k) {
        return 0;
    }
    while(true) {
        if(cap + v[st] > V || st > n)
            break;
        cap += v[st];
        st++;
    }
    return verif(V, st, am+1);
}

int bin(long st, long dr) {
    long mid = (st+dr)/2;
    bool ve = verif(mid-1, 0, 0);
    bool ve2 = verif(mid, 0, 0);
    if(!ve && ve2)
        return mid;
    if(!ve && !ve2)
        return bin(mid-1, dr);
    if(ve && ve2)
        return bin(st, mid+1);
}

int main() {

    in >> n >> k;

    int V = 0;

    for(int i = 0; i < n; i++) {
        in >> v[i];
        if(v[i] > V)
            V = v[i];
    }

    out << bin(0, 2000000);

    /*while(true) {

        if(verif(V, 0, 0)) {

            out << V;
            return 0;

        }

        V++;

    }*/

   // cout << verif(12313, 0, 0);am == k-1

    return 0;
}