Cod sursa(job #3336262)

Utilizator moloDaniMolodet Andrei Daniel moloDani Data 24 ianuarie 2026 14:32:56
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>

using namespace std;

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

const int mxN = 16e3 + 1;
const int INF = 16100 * 16100 + 1;

int n, saltele[mxN], k;

bool test(int camion){
    int indice = 1;
    for(int i = 1; i <= k; i++){
        int vol = 0;
        while(vol + saltele[indice] <= camion){
            vol += saltele[indice++];
            if(indice > n)
                return true;
        }
    }
    return false;
}

int cautBin(){
    int st = 1, dr = INF, mid;
    while(st <= dr){
        mid = (st + dr) / 2;
        if(test(mid)){
            dr = mid - 1;
        }else{
            st = mid + 1;
        }
    }

    return st;
}

int main(){
    fin >> n >> k;
    for(int i = 1; i <= n; i++)
        fin >> saltele[i];

    fout << cautBin();
    return 0;
}