Cod sursa(job #2891581)

Utilizator mateicalin2002Ceausu Matei Calin mateicalin2002 Data 19 aprilie 2022 02:10:51
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <bits/stdc++.h>

using namespace std;

#define NMAX 16005

int n, k, v[NMAX], max_value = -1, sum;

int check_truck(int capacity)
{
	int s = 0;
	int i = 1;
	int drums = 0;
	while (i <= n) {
		while (i <= n && s + v[i] <= capacity) {
			s += v[i];
			++i;
		}
		s = 0;
		++drums;
	}
	cout << capacity << " capac " << drums << '\n';
	return drums;
}

int binary_search(int val)
{
    int i, step;
    for (step = 1; step <= sum; step <<= 1);
    for (i = max_value; step; step >>= 1)
        if (i + step <= sum && check_truck(i + step) > val)
           i += step;
    return i + 1;
}

int main()
{
	ifstream fin("transport.in");
	ofstream fout("transport.out");
	fin >> n >> k;
	for (int i = 1; i <= n; i++) {
		fin >> v[i];
		sum += v[i];
		if (max_value < v[i])
			max_value = v[i];
	}
	cout << binary_search(k) << '\n';
	fin.close();
	fout.close();
	return 0;
}