Cod sursa(job #1555700)

Utilizator cristiancCristian cristianc Data 23 decembrie 2015 14:21:23
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <fstream>
using namespace std;
bool bun(unsigned v[], unsigned n, unsigned k, unsigned test)
{
	unsigned nr = 1, s = 0;
	for (unsigned i = 0; i < n; i++)
	{
		if (v[i] > test)
			return false;
		s += v[i];
		if (s > test)
			s = v[i], nr++;
	}
	return (nr <= k ? true : false);
}
int main()
{
	ifstream ii("transport.in");
	ofstream oo("transport.out");
	unsigned n, k, i, pas = 16384*16384, test = 0, cap = pas;
	ii >> n >> k;  unsigned v[n];
	for (i = 0; i < n; i++) ii >> v[i];
	for (; pas; pas /= 2)
	{
		if (bun(v, n, k, test + pas))
			cap = test + pas;
		else
			test += pas;
	}
	oo << cap;
}