Cod sursa(job #2372669)

Utilizator riordache58Razvan Iordache riordache58 Data 7 martie 2019 10:28:45
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <bits/stdc++.h>

#define NMAX 16005

using namespace std;

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

long long int n , v[NMAX] , k , m , i , val = 1 , nr;

bool transport ( int x )
{
    long aux;

    long nr;

    long i;

    aux = 0;

    nr = 0;

    for ( i = 1 ; i <= n ; i ++ )
    {
        if ( v[i] > x )
            return 0;

        if ( v[i] > aux )
        {
            nr ++;

            aux = x;
        }

        aux -= v[i];
    }

    if ( nr <= k )
        return 1;
    else
        return 0;
}


int cautbin()
{
    int mij;

    int st;

    int dr;

    int minim;

    mij = 0;

    st = 1;

    dr = NMAX * NMAX;

    minim = -1;

    while ( st <= dr )
    {
        mij = ( dr - st ) / 2 + st;

        if ( transport ( mij ) != 0 )
        {
            minim = mij;

            dr = mij - 1;
        }

        else
        st = mij + 1;
    }

    return minim;
}

int main()
{
    f >> n >> k;

    for ( i = 1 ; i <= n ; i ++ )
        f >> v[i];

    g << cautbin();

    return 0;
}