Cod sursa(job #3322469)

Utilizator skeptekalmatei ola skeptekal Data 14 noiembrie 2025 11:38:28
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 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];

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

    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;

    while (st <= dr) {
        int mij=(st+dr)/2;
        int curse=1;
        int volumCurent = 0;

        for (int i=0;i<n;i++) {
            if (volumCurent+saltele[i]<=mij)
                volumCurent+=saltele[i];
            else {
                curse++;
                volumCurent=saltele[i];
            }
        }
        if (curse<=k) {
            raspuns=mij;
            dr=mij-1;
        } else {
            st=mij+1;
        }
    }

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