Cod sursa(job #1045239)

Utilizator BionicMushroomFMI - Dumitrescu Tiberiu Alexandru BionicMushroom Data 1 decembrie 2013 06:18:20
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<fstream>
using namespace std;

int n, k, *v;

bool depaseste (short capacitate)
{
	int sum = 0, drumuri = 1;
	for (short i = 0; i < n; i++)
	{	
		sum += v[i];
		if (sum  > capacitate)
		{
			sum = v[i];
			drumuri++;
		}
		if (drumuri > k)
			return true;
	}
	return false;
}

int main()
{
	int lim_s, lim_d, potential;
	ifstream f ("transport.in");
	f >> n >> k;
	v = new int[n];
	f >> v[0];
	lim_s = lim_d = v[0];
	for (short i = 1; i < n; i++)
	{
		f >> v[i];
		lim_d += v[i];
		if (lim_s < v[i])
			lim_s = v[i];
	}
	while (lim_s != lim_d)
	{
		potential = (lim_s + lim_d) / 2;
		if (!depaseste(potential))
			lim_d = potential;
		else
			lim_s = potential + 1;
	}
	ofstream g ("transport.out");
	g << lim_d;
	g.close();
	return 0;
}