Cod sursa(job #3037631)

Utilizator pregoliStana Andrei pregoli Data 25 martie 2023 23:22:48
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>
using namespace std;
const string FNAME = "data";
ifstream fin(FNAME + ".in");
ofstream fout(FNAME + ".out");

int getTrans(int targetVol, const vector<int> &vols) {
    int totalVol = 1, trans = 0;
    for (int vol : vols) {
        if (totalVol + vol <= targetVol) {
            totalVol += vol;
        } else {
            totalVol = vol;
            trans++;
        }
    }
    return trans;
}

int main() {
    int n, k;
    vector<int> vols(n);
    fin >> n >> k;
    for (int &vol : vols) {
        fin >> vol;
    }

    int low = *max_element(vols.cbegin(), vols.cend());
    int high = accumulate(vols.cbegin(), vols.cend(), 0);

    int ans = 0;
    while (low <= high) {
        int mid = (low + high) / 2;
        if (getTrans(mid,  vols) <= k) {
            high = mid - 1;
            ans = mid;
        } else {
            low = mid + 1;
        }
    }
    fout << ans << endl;
    fout.close();
    return 0;
}