Cod sursa(job #3322466)

Utilizator skeptekalmatei ola skeptekal Data 14 noiembrie 2025 11:28:57
Problema Transport Scor 100
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

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

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

    int saltele[16001];  // N ≤ 16000 conform cerinței

    for (int i = 0; i < N; i++)
        fin >> saltele[i];

    // Calculăm limitele pentru căutarea binară
    int st = saltele[0];
    int dr = 0;
    for (int i = 0; i < N; i++) {
        if (saltele[i] > st) st = saltele[i];
        dr += saltele[i];
    }

    int raspuns = dr;

    // Căutare binară
    while (st <= dr) {
        int mid = (st + dr) / 2;
        int curse = 1;
        int volumCurent = 0;

        // Simulăm transporturile
        for (int i = 0; i < N; i++) {
            if (volumCurent + saltele[i] <= mid)
                volumCurent += saltele[i];
            else {
                curse++;
                volumCurent = saltele[i];
            }
        }

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

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