Cod sursa(job #3038534)

Utilizator pregoliStana Andrei pregoli Data 27 martie 2023 14:56:12
Problema Transport Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;
const string FNAME = "transport";
ifstream fin(FNAME + ".in");
ofstream fout(FNAME + ".out");
constexpr int NMAX = 16e3;
int n, k, v[NMAX];

int getTrans(int cap) {
    int sumCap = 0, trans = 1;
    for (int i = 1; i <= n; i++) {
        if (sumCap + v[i] <= cap) {
            sumCap += v[i];
        } else {
            sumCap = v[i];
            trans++;
        }
    }
    return trans;
}

int main() {
    fin >> n >> k;
    for (int i = 1; i <= n; i++) {
        fin >> v[i];
    }
    int low = *max_element(v + 1, v + n + 1), high = 1e8 + 2;
    int ans = -1;
    while (low <= high) {
        int mid = low + (high - low) / 2;
        if (k >= getTrans(mid)) {
            high = mid - 1;
            ans = mid;
        } else {
            low = mid + 1;
        }
    }
    fout << ans << endl;
    fout.close();
    return 0;
}