Cod sursa(job #2670909)

Utilizator codicaMaria Lovin codica Data 10 noiembrie 2020 21:58:07
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb

    #include <fstream>
    using namespace std;
    ifstream fin ("transport.in");
ofstream fout ("transport.out");
    int v[16003],n,k,maxi = 0;
    int noftt(int c)
    {
        int i = 0, cur = 0, noft = 0;
        while( i < n)
        {
            if (cur+v[i] <=  c)
                cur +=v[i];
            else
            {
                cur = v[i];
                noft++;
            }
            i++;
        }
        if( cur!=0)
            noft++;
        return noft;
    }
    int BS(int st , int dr)
    {
        while( st<=dr)
        {
            int mij = (st+dr)/2;
            int n_o_t = noftt(mij);
            if (n_o_t == k)
            {
                if( noftt(mij-1) >k)
                    return mij;
                else
                    dr = mij-1;
            }
            if( n_o_t < k )
                dr = mij-1;
            if( n_o_t > k)
                st = mij+1;
        }
    }
     int main()
    {
        fin >> n >> k;
        for(int i = 0 ; i < n ; i++)
        {
            fin >>v[i];
            if (v[i]> maxi)
                maxi = v[i];
        }
        int result = BS(maxi,n*16000);
        fout<< result;
        return 0;
    }