Cod sursa(job #2484771)

Utilizator stan_flaviusStan Flavius Stefan stan_flavius Data 31 octombrie 2019 16:09:23
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 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 CB(int st,int dr)
{
    int val=1e9;
    while(st<=dr)
        {
            int mid=(st+dr)/2;
            if(calc(mid)>nr_max_transp) st=mid+1;
            else
                {
                    val=min(mid,val);
                    dr=mid-1;
                }
        }
    return val;
}

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

    fout<<CB(0,1e9);
    return 0;
}