Cod sursa(job #465182)

Utilizator dornescuvladVlad Eugen Dornescu dornescuvlad Data 23 iunie 2010 16:08:22
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>

using namespace std;

const char iname[] = "energii.in";
const char oname[] = "energii.out";
const int gmax = 1005;
const int emax = 5005;

ifstream fin(iname);
ofstream fout(oname);

int G, W, E[gmax], C[gmax], dp[gmax][emax], i, j ; 

int main()
{	
	
	fin >> G >> W;
	for(i = 1; i <= G; i ++)
		fin >> E[i] >> C[i];
	dp[1][E[1]] = C[1];
	for(i = 1; i <= G; i ++)
		for(j = 0; j <= W; j ++)
		{	
			dp[i][E[i]] = C[i];
			if(dp[i - 1][j] != 0)
				dp[i][j] = min(dp[i - 1][j], dp[i - 1][j - E[i]] + C[i]);
			else
				if(j - E[i] >= 0 && dp[i - 1][j - E[i]] != 0)
					dp[i][j] = dp[i - 1][j - E[i]] + C[i];
		}
	for(i = W; i <= W + 2000; i ++)
		if(dp[G][i] != 0)
		{
			fout << dp[G][i];
			break;
		}
	return 0;
}