Cod sursa(job #2074188)

Utilizator Andrei_RAndrei Roceanu Andrei_R Data 24 noiembrie 2017 10:30:18
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, k, v[16002], pas, i, r;

bool sepoate( int l ) {
    int c, nr;
    c = nr = 0;
    for ( i = 1; i <= n; i++ ) {
        if ( v[i] > c ) {
            nr++;
            c = l;
        }
        if ( v[i] > c )
            return false;
        if ( nr > k )
            return false;
        c -= v[i];
    }
    return true;
}

int main()
{
    f >> n >> k;
    pas = 1 << 25;
    for ( i = 1; i <= n; i++ ) {
        f >>v[i];
    }
    while ( pas != 0 ) {
        if ( sepoate(r+pas) == 0 )
            r += pas;
        pas/=2;
    }
    g << r+1;
    f.close();
    g.close();
    return 0;
}