Cod sursa(job #3322157)

Utilizator rayenn3D Andra rayenn3 Data 12 noiembrie 2025 22:30:43
Problema Transport Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>

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

int v[46000];
int main()
{
    int n, k, smin = 16001, smax = 0, dimensiune = 16000;
    fin >> n >> k;
    for(int i = 1; i <= n; i ++){
        fin >> v[i];
        if(v[i] < smin)
            smin = v[i];
        smax = smax + v[i];
    }
    int st, dr, mij, k1;
    st = smin;
    dr = smax;

    while(st <= dr){
        k1 = 0;
        mij = (st + dr)/2;
        long long spartiala = 0;
        for(int i = 1; i <= n; i ++){
            spartiala = spartiala + v[i];
            if(spartiala > mij){
                k1 ++;
                spartiala = v[i];
        }
        }
        k1 ++;
        if(k1 > k)
            st = mij + 1;
        else{
            if(dimensiune > mij)
                dimensiune = mij;
            dr = mij - 1;
        }
    }
    fout << dimensiune;
    return 0;
}