Cod sursa(job #2074170)

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

using namespace std;

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

int n, k, v[16000], ajt, i;

bool sepoate( int l ) {
    int c, nr;
    c = nr = 0;
    for ( int i = 0; 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;
    for ( i = 0; i < n; i++ )
        f >> v[i];
    i = 19683;
    while ( !sepoate(i) ) {
        i /= 3;
    }
    ajt  = i;
    i /= 3;
    while ( i != 0) {
        if ( sepoate(ajt) )
            ajt -= i;
        else
            ajt += i;
        i /= 3;
    }
    if ( sepoate(ajt) ) {
        while ( sepoate(ajt) )
            ajt--;
        ajt++;
    }
    else
        while ( !sepoate(ajt) )
            ajt++;
    g << ajt;
    f.close();
    g.close();
    return 0;
}