Cod sursa(job #3317963)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 26 octombrie 2025 11:38:19
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;

int main() {
    ifstream f("transport.in");
    ofstream g("transport.out");

    int N, K;
    f >> N >> K;

    vector<int> v(N + 1);
    for (int i = 1; i <= N; i++)
        f >> v[i];

    int st = *max_element(v.begin() + 1, v.end());
    long long dr = 0;
    for (int i = 1; i <= N; i++)
        dr += v[i];

    while (st < dr) {
        long long mid = (st + dr) / 2;
        int curse = 1;
        long long curent = 0;

        for (int i = 1; i <= N; i++) {
            if (curent + v[i] <= mid)
                curent += v[i];
            else {
                curse++;
                curent = v[i];
            }
        }

        if (curse <= K)
            dr = mid;
        else
            st = mid + 1;
    }

    g << st << "\n";
    return 0;
}