Cod sursa(job #2483658)

Utilizator stan_flaviusStan Flavius Stefan stan_flavius Data 30 octombrie 2019 02:37:21
Problema Transport Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#include <algorithm>
#define nmax 16001

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

int nr_saltele,nr_max_transp;
int v_saltea[nmax];
int sol_capacitate;

int calc(int capacitate)
{
    int ct_transporturi=1;
    int volum_transport=0;
    for(int i=1; i<=nr_saltele; i++)
        {
            volum_transport+=v_saltea[i];
            if(volum_transport>capacitate) {volum_transport=v_saltea[i]; ct_transporturi++;}
        }
    return ct_transporturi;
}

int main()
{
    fin>>nr_saltele>>nr_max_transp;
    for(int i=1; i<=nr_saltele; i++)
        {
            fin>>v_saltea[i];
        }

    int capacitate=1e9;
    sol_capacitate=0;
    while(capacitate>0)
        {
            if(calc(sol_capacitate+capacitate)>nr_max_transp)
                sol_capacitate+=capacitate;
            capacitate/=2;
        }

    fout<<sol_capacitate+1;
    return 0;
}