Cod sursa(job #1717407)

Utilizator pringonGoje Samuel Andrei Daniel pringon Data 14 iunie 2016 20:09:45
Problema Transport Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

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

int n, k, v[16000];

void read() {
    in>>n>>k;
    for(int i=1;i<=n;i++) {
        in>>v[i];
    }
}

bool posibil(int capacitate) {
    int curent = 0;
    int drumuri = 1;
    for(int i=1;i<=n;i++) {
        if (v[i] > capacitate) return false;
        if(curent + v[i] > capacitate) {
            curent = 0;
            drumuri++;
            curent += v[i];
        }
        else {
            curent += v[i];
        }
    }
    if(drumuri <= k)
        return true;
    return false;
}

void binar() {
    int pas = 1<<28;
    int nr = 0;
    while(pas != 0) {
        if(!posibil(nr+pas))
            nr += pas;
        pas /= 2;
    }
    out<<nr+1;
}

int main() {
    read();
    binar();

    in.close();
    out.close();
    return 0;
}