Cod sursa(job #2804005)

Utilizator thvulpeTheodor Vulpe thvulpe Data 20 noiembrie 2021 18:09:57
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 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;

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 = 0;
        }
    }
    if(cam)
        nrd++;
    return nrd;
}

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