Cod sursa(job #1855540)

Utilizator Firealex2Rotileanu Alexandru Firealex2 Data 23 ianuarie 2017 19:03:43
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>

using namespace std;

ifstream fi("energii.in");
ofstream fo("energii.out");

struct generatoare {
	int energie, cost;
};

#define INF 9999999;

int G, W, sol, index;

generatoare V[1001];
int sume[10001];

void rucsac();

int main()
{
	sol = 9999999;
	fi >> G >> W;
	for (int i = 1;i <= G;i++)
		fi >> V[i].energie >> V[i].cost;
	rucsac();
	if (sol == 9999999)
		sol = 0;
	fo << sol - 1;
	return 0;
}

void rucsac()
{
	sume[0] = 1;
	int start = 0;
	for (int j = 1;j <= G;j++)
	{
		for (int i = start;i >= 0;i--)
		{
			if (sume[i] != 0)
			{
				int x = i + V[j].energie;
				int cost = sume[i] + V[j].cost;
				if (sume[x] > cost || sume[x] == 0)
					sume[x] = cost;
				if (x>start)
					start = x;
				if (x >= W)
					if (cost < sol)
						sol = cost;
			}
		}

		if (start >= W)
			start = W;

	}
	return;
}