Cod sursa(job #2272129)

Utilizator MicuMicuda Andrei Micu Data 29 octombrie 2018 18:36:58
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int L=28, N=16001;
int n, v[N];

int NrTrans(int cap)//cate transporturi se fac pentru capacitatea cap
{
    int nrtrans=0, s=0;
    for(int i=1;i<=n;i++)
    {
       if((s+v[i])>cap)
        {
            //cout << '\n';
            s=v[i];
            nrtrans++;
        }
        else
        {
            s+=v[i];
        }
    }
    return nrtrans+1;
}

int CautBin(int k)
{
    int r = 0, pas = 1<<L;
    while(pas!=0)
    {
        if(NrTrans(r+pas)>=k+1)
        {

            r+=pas;
            //cout << r+pas << ' ' << NrTrans(r+pas) << '\n';
        }

        pas/=2;
    }
    return r+1;
}

int main()
{
    int k;
    in >> n >> k;
    for(int i=1;i<=n;i++)
    {
        in >> v[i];
    }
    //for(int i=1;i<=n;i++) cout << v[i] << ' ';
    out << CautBin(k);
    return 0;
}