Cod sursa(job #3363700)

Utilizator msashaMoicianu Sasha msasha Data 21 august 2026 15:23:45
Problema Transport Scor 100
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>

using namespace std;

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

int n, k, v[16000];

bool verificare_capacitate(int mij) {
    int i, tr = 1, dim = mij;
    for ( i = 0; i < n && tr <= k; i ++ ) {
        if ( dim >= v[i] ) {
            dim = dim - v[i];
        }
        else {
            tr ++;
            dim = mij - v[i];
        }
    }
    return tr <= k;
}

int cautare_binara_dimensiune(int maxim, int suma) {
    int st = maxim - 1, dr = suma, mij;
    while ( dr - st > 1) {
        mij = ( st + dr ) / 2;
        if ( verificare_capacitate(mij) ) {
            dr = mij;
        }
        else {
            st = mij;
        }
    }
    return dr;
}

int main()
{
    int i, maxim = 0, suma = 0, c;
    fin >> n >> k;
    for ( i = 0; i < n; i ++ ) {
        fin >> v[i];
        suma = suma + v[i];
        if ( v[i] > maxim ) {
            maxim = v[i];
        }
    }
    c = cautare_binara_dimensiune(maxim, suma);
    fout << c;

    return 0;
}