Cod sursa(job #2658288)

Utilizator NanuGrancea Alexandru Nanu Data 13 octombrie 2020 17:16:33
Problema Transport Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int v[16001], n, k, i;

bool secventa(int x) {
    int nrtrans = 0, s = 0;
    for(i = 1; i <= n; i++) {
        s += v[i];

        if(v[i] > x)    //daca gasim o saltea care nu incape;
            return 0;

        if(s > x) {
            s = v[i];
            nrtrans++;
        }
    }
    if(s > 0)
        nrtrans++;

    return (nrtrans <= k);
}

int CautareBinara() {
    int st = 1, dr = 32000, x = 1;
    while(st <= dr) {
        int mid = (st + dr) / 2;
        if(secventa(mid) == 1) {
            dr = mid - 1;
            x = mid;
        }
        else st = mid + 1;
    }
    return x;
}

int main() {
    cin >> n >> k;
    for(i = 1; i <= n; i++)
        cin >> v[i];
    cout << CautareBinara();
    return 0;
}