Cod sursa(job #3036864)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 25 martie 2023 10:59:58
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, i, a[16002], m, st, dr, mij, t, r = -1;

static inline int sim(int cap) {
    int trans = 0, tot = 0;
    for(i = 1; i <= n; i++) {
        if(tot + a[i] <= cap) tot += a[i];
        else tot = a[i], trans++;
    }
    return trans;
}

int main() {
    fin >> n >> k;
    for(i = 1; i <= n; i++) {
        fin >> a[i];
        m = max(m, a[i]);
    }

    st = m;
    dr = 1e8 + 2;
    while(st <= dr) {
        mij = st + (dr - st) / 2;
        t = sim(mij);
        if(t <= k) dr = mij - 1, r = mij;
        else st = mij + 1;
    }
    fout << r;

    return 0;
}