Cod sursa(job #1453356)

Utilizator DysKodeTurturica Razvan DysKode Data 23 iunie 2015 13:07:21
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

using namespace std;

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

int ls,ld,mij,v[16000],i,j,k,aux,maxi,nrTrans,n,maxi2;

int main()
{
    fin>>n>>k;
    for( i = 1 ; i <= n ; ++i )
    {
        fin>>v[ i ];
        maxi2 += v[ i ];
        if( v[ i ] > maxi )
            maxi = v[ i ];
    }

    ls = maxi;
    ld = maxi2;
    while( ls < ld )
    {
        mij = ( ls + ld ) / 2;

        for( i = 1 , aux = 0 , nrTrans = 1 ; i <= n ; ++i )
        {
            if( aux + v[ i ] > mij )
            {
                aux = v[ i ];
                ++nrTrans;
            }
            else
            {
                aux += v[ i ];
            }
        }

        if( nrTrans > k )
            ls = mij;
        else
            ld = mij;
    }

    fout<<ld;

return 0;
}