Cod sursa(job #2074182)

Utilizator Andrei_RAndrei Roceanu Andrei_R Data 24 noiembrie 2017 10:19:35
Problema Transport Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 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];
        ajt += v[i];
    }
    ajt /= k;
    if ( sepoate(ajt) ) {
        while ( sepoate(ajt) )
            ajt--;
        ajt++;
    }
    else
        while ( !sepoate(ajt) )
            ajt++;
    g << ajt;
    f.close();
    g.close();
    return 0;
}