Cod sursa(job #3295481)

Utilizator cip1634ciprian dum cip1634 Data 6 mai 2025 00:01:28
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
using namespace std;

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

    int N, K;
    fin >> N >> K;

    int v[16001];
    int suma = 0, maxi = 0;

    for (int i = 0; i < N; i++) {
        fin >> v[i];
        suma += v[i];
        if (v[i] > maxi) maxi = v[i];
    }

    int st = maxi, dr = suma;
    int sol = suma;

    while (st <= dr) {
        int mid = (st + dr) / 2;

        int curse = 1;
        int cap = 0;

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

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

    fout << sol << "\n";
    return 0;
}