Cod sursa(job #842042)

Utilizator antonioteoZait Teodor Antonio antonioteo Data 25 decembrie 2012 21:52:01
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>
#include <cstring>
#define INF 0x3f3f3f3f
using namespace std;
const char iname[] = "energii.in";
const char oname[] = "energii.out";
ifstream fin(iname);
ofstream fout(oname);
int G , W , i , j , ec , EG_i , EC_i;
int DP[ 1004 ][ 5004 ];
int main()
{
	fin >> G >> W;
	//memset(DP,INF,sizeof(DP));
	for(i = 0; i <= G; i++)
		for(j = 1; j <= W; j++)
			DP[i][j] = INF;
	for (i = 1; i <= G; ++i)
	{
		fin >> EG_i >> EC_i;
		for (j = 1; j <= W; ++j)
		{
			DP[i][j] = min(DP[i - 1][j] , EC_i);
			if (EG_i <= j)
				DP[i][j] = min(DP[i - 1][j - EG_i] + EC_i , DP[i - 1][j]);
		}
	}
	if (DP[G][W] != INF)
		fout << DP[G][W] << '\n';
	else 
		fout << -1 << '\n';
	return 0;
}