Cod sursa(job #2101672)

Utilizator eduardandrei20Nechifor Eduard Andrei eduardandrei20 Data 7 ianuarie 2018 19:42:18
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;

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

int v[16001] , n , k ,maxim, sus;
void c()
{
    in >> n >> k;
    for ( int i =1 ; i <= n ; ++i)
           {in >> v[i];
           maxim=max(maxim,v[i]);
           sus+=v[i];
           }
}

bool mere( int valoare )
{ int sp=0; int aux = 1 ;
    for ( int i =1 ; i <= n ; ++ i)
    {
        if (sp+v[i]<=valoare)sp+=v[i];
        else {
            sp=v[i];
            ++ aux;
            if (aux>k) return false;
        }
    }
    return true;
}

int caut_bin( int left, int right)
{
    int m = (left+right) / 2 ;
    if (left==right) return left;
    if ( mere(m) ) caut_bin(left,m);
    else caut_bin(m+1,right);
}

int main()
{c();
out << caut_bin(maxim,sus);

    return  0 ;
}