Cod sursa(job #2516945)

Utilizator WilIiamperWilliam Damian Balint WilIiamper Data 2 ianuarie 2020 17:06:52
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#define MAX 16010

using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n, k, v[MAX];

int nr_drumuri (int capacitate) {
    int nr = 0, s = 0;
    for (int i = 1; i <= n; i++) {
        if (v[i] > capacitate) return MAX; // daca salteaua este prea mare pentru camion

        if (s + v[i] <= capacitate)
            s += v[i];
        else {
            nr++;
            s = v[i];
        }
    }

    return nr+1;
}

int main()
{
    fin >> n >> k;
    for (int i = 1; i <= n; i++)
        fin >> v[i];

    //cautare binara
    int l = 1, h = MAX*MAX, mid;
    while (l <= h) {
        mid = l + (h-l)/2; // echivalent cu (l + h)/2
        if (nr_drumuri(mid) > k)
            l = mid+1;
        else
            h = mid-1;
    }

    fout << l;
    return 0;
}