Cod sursa(job #1106152)

Utilizator gerd13David Gergely gerd13 Data 12 februarie 2014 16:28:10
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;

const int NMAX = 16005 ;

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

int N, K, V[NMAX] ;
int sum ;

inline bool verif(int Q)
{
    int s=0, nr=1;
    for(int i = 1 ; i <= N ; ++ i)
    {
        if(s + V[i] <= Q) s = s + V[i] ;
        else if(V[i] <= Q)
        {
            ++ nr ;
            s = V[i] ;
        }
       else return false ;
    }
    if(nr <= K) return true;
    else return false ;
}

inline int cbinare(int a, int b)
{

    int mijloc ;
    if(a == b ) return a ;
    mijloc = (a+b) / 2 ;
     if(verif(mijloc)) return cbinare(a, mijloc) ;
     else return cbinare(mijloc, b) ;

}

int main()
{
    cin >> N >> K ;

    for(int i = 1 ; i <=  N ; ++ i)
    {
        cin >> V[i] ;
        sum = sum + V[i] ;

    }

    cout << cbinare(1, sum) ;
    cin.close() ;
    cout.close();
    return 0;
}