Cod sursa(job #3277017)

Utilizator raduiliIliusco Radu raduili Data 15 februarie 2025 11:17:47
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>
using namespace std;

ifstream fin("transport.in");
ofstream fout("transport.out");

int main()
{
    int n; fin >> n;
    int k; fin >> k;

    int maxc = 0, s = 0;
    int v[n+1];
    for (int i=1; i<=n; i++) {
        fin >> v[i];
        s += v[i];
        if (v[i] > maxc) maxc = v[i];
    }

    int l = maxc;
    int r = s;
    while (l < r) {
        int mij = (l+r)/2;

        int drumuri = 1, ds = 0;
        for (int i=1; i<=n; i++) {
            ds += v[i];
            if (ds > mij) {
                ds = v[i];
                drumuri++;
            }
        }

        // cout << "mij: " << mij << "  d: " << drumuri << endl;

        if (drumuri > k) l = mij+1;
        else r = mij-1;
    }
    fout << l;

    return 0;
}