Cod sursa(job #967548)

Utilizator AstronothingIulia Comsa Astronothing Data 27 iunie 2013 22:26:32
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;

int A[5000][1000];
#define MAXINT 2000000000

int main()
{
	ifstream f("energii.in");
	ofstream f2("energii.out");

	int G; f>>G;
	int Wmin; f>>Wmin;

	int w[1002];
	int cost[1002];
	for(int i = 0; i < G; ++i) f>>w[i]>>cost[i];

	for(int i = 0; i < 5001; ++i)
		for(int j = 0; j < 1001; ++j) A[i][j] = MAXINT;

	for(int sum = 1; sum <= Wmin; ++sum)
	{
		if(w[0] >= sum) A[sum][0] = cost[0];
		for(int elem = 1; elem < G; ++elem)
		{
			if(sum - w[elem] <= 0) 
				A[sum][elem] = min(cost[elem], A[sum][elem-1]);
			else 
				A[sum][elem] = min(A[sum][elem-1], cost[elem] + A[sum-w[elem]][elem-1]);
		}
	}

	if(A[Wmin][G-1] == MAXINT) f2<<-1;
	else f2<<A[Wmin][G-1];
}