Cod sursa(job #2804017)

Utilizator thvulpeTheodor Vulpe thvulpe Data 20 noiembrie 2021 18:20:26
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int c, n, k, a[16003], mij, st, dr, nrd, Max;

int simulate(int cap){
    int nrd = 0, cam = 0;
    for(int i = 1; i <= n; i++){
        if(cam + a[i] <= cap)
            cam += a[i];
        else{
            nrd++;
            cam = a[i];
        }
    }
    if(cam)
        nrd++;
    return nrd;
}

int main(){
    fin >> n >> k;
    for(int i = 1; i <= n; i++){
        fin >> a[i];
        if(a[i] > Max)
            Max = a[i];
        c += a[i];
    }
    st = Max;
    dr = c;
    while(st < dr){
        mij = (st + dr) / 2;
        nrd = simulate(mij);
        if(nrd <= k)
            dr = mij;
        else
            st = mij + 1;
    }
    fout << dr;
}