Cod sursa(job #2841374)

Utilizator divadddDavid Curca divaddd Data 29 ianuarie 2022 17:16:43
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>
#define MAX 16002
using namespace std;
int n,k,cmax,cmin,v[MAX];

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

int transporturi(int c){
    int actual = 0, ans = 1;
    for(int i = 1; i <= n; i++){
        /// vrem sa adaugam v[i] in camionul acutal
        if(actual+v[i] <= c){
            actual += v[i];
        }else{
            /// nu mai incape
            ans++;
            actual = v[i];
        }
    }
    return ans;
}

int main()
{
    fin >> n >> k;
    for(int i = 1; i <= n; i++){
        fin >> v[i];
        cmax += v[i];
        cmin = max(cmin, v[i]);
    }
    int rez = 0;
    /// cautam cel mai mic nr c pt nrT <= k
    int st = cmin, dr = cmax;
    while(st <= dr){
        int mij = (st+dr)/2;
        int nrT = transporturi(mij);
        if(nrT <= k){
            rez = mij;
            dr = mij-1;
        }else{
            st = mij+1;
        }
    }
    fout << rez << "\n";
    return 0;
}