Cod sursa(job #1714539)

Utilizator vlasiuflaviusVlasiu Flavius vlasiuflavius Data 8 iunie 2016 17:16:17
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
using namespace std;
ofstream fout("transport.out");
ifstream fin ("transport.in" );
long long n , k , v[20000] , st , dr , mij , cnt , rsp , nr , suma;
int main()
{
    fin>>n>>k;
    for( int i = 1 ; i <= n ; i++ ) fin>>v[ i ];
    st = 1 ;
    dr = 2000000000;
    while( st <= dr )
    {
        mij = ( st + dr ) >> 1;
        suma = 0;
        cnt = 1;
        for(int i = 1 ; i <= n ; i++ )
        {
            if( suma + v[ i ] <= mij ) suma += v[ i ];
            else
            {
                suma = v[ i ] ;
                cnt++;
            }
            if( v[ i ] > mij ) cnt = k + 1;
        }
        if( cnt <= k )
        {
            rsp = mij;
            dr = mij - 1;
        }
        else st = mij + 1;
    }
    fout<<rsp;
}