Cod sursa(job #3255266)

Utilizator geeedavid susu geee Data 9 noiembrie 2024 21:17:47
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n, k, s = 0, v[16005];

int main() {
    cin >> n >> k;
    int m = 0;

    for (int i = 1; i <= n; i++) {
        cin >> v[i];
        s += v[i];
        if (m < v[i])
            m = v[i];
    }

    int l = m, r = s, x, res = 1e9;

    while (l <= r) {
        x = (l + r) / 2;
        int t = 0, p = 1;

        for (int i = 1; i <= n; i++) {
            if (t + v[i] <= x) {
                t += v[i];
            } else {
                p++;
                t = v[i];
            }
        }

        if (p <= k) {
            res = min(res, x);
            r = x - 1;
        } else {
            l = x + 1;
        }
    }

    cout << res;
    return 0;
}