Cod sursa(job #2400588)

Utilizator bluestorm57Vasile T bluestorm57 Data 8 aprilie 2019 21:31:44
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>

using namespace std;

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

int n, k;
int v[16005];

int main(){
    int i;
    int cmax = 0;
    f >> n >> k;
    for( i = 1 ; i <= n ; i++){
        f >> v[i];
        cmax = max(cmax, v[i]);
    }

    int lo = cmax;
    int hi = 16005 * 16005;
    while( lo <= hi){
        int mid = (lo + hi) / 2;
        int lim = 1;
        int sum = mid - v[1];

        for ( i = 2 ; i <= n ; i++){
            if( v[i] <= sum )
                sum -= v[i];
            else{
                sum = mid - v[i];
                lim++;
            }
        }
        if ( lim <= k)
            hi = mid - 1;
        else
            lo = mid + 1;
    }

    g << lo;
    return 0;
}