Cod sursa(job #1257398)

Utilizator LegionHagiu Stefan Legion Data 7 noiembrie 2014 18:35:14
Problema Energii Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
#include <fstream>
using namespace std;
int costuri[10000000];
int main()
{
	ifstream in("energii.in");
	ofstream out("energii.out");
	int i, g, w, egi, cgi, enec = -1, maximumc = 0, j,ccc,ddd;
	in >> g;
	in >> w;
	for (i = 1; i <= g; i++)
	{
		in >> egi;
		in >> cgi;
		ccc = 0;
		ddd = maximumc;
		for (j = maximumc; j >= 1; j--)
		{
			if (costuri[j] > 0)
			{
				if (costuri[j + cgi] < costuri[j] + egi)
				{
					costuri[j + cgi] = costuri[j] + egi;
					if (ccc<costuri[j + cgi]){ ccc = costuri[j + cgi]; ddd = j + cgi; }
					if (j + cgi > maximumc)
					{
						maximumc = j + cgi;
					}
				}
			}
		}
		maximumc = ddd;
		if (maximumc < cgi){ maximumc = cgi; }
		if (costuri[cgi]>egi || costuri[cgi] == 0){ costuri[cgi] = egi; }
	}
	for (i = 1; i <= maximumc; i++)
	{
		if (costuri[i] >= w){ enec = i; break; }
	}
	out << enec;
	return 0;
}