Cod sursa(job #412864)

Utilizator avram_florinavram florin constantin avram_florin Data 6 martie 2010 19:55:26
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
#define MAXW 5001
#define MAXG 1001

using namespace std;
ifstream f ("energii.in");
ofstream g ("energii.out");
const int x = 32000;
int G, W , dp[MAXW];
struct generator{
			int e,c;};
generator v[MAXG];

void read()
{
	int i;
	f >> G >> W;
	for(i = 1 ; i <= G ; i++)
		f >> v[i].e >> v[i].c;
}

int solve()
{
	int i,j;
	for(i = 1 ; i <= W ; i++)
		dp[i] = x;
	dp[0] = 0;
	for(i = 1 ; i <= G ; i++)
		for(j = W ; j >=0 ; j--)
			if( j+v[i].e < W)
				{
					if(dp[j+v[i].e] > dp[j] + v[i].c)
						dp[j+ v[i].e] = dp[j] + v[i].c;
				}
				else
				if( dp[W] > dp[j]+ v[i].c)
					dp[W] = dp[j] + v[i].c;
	if(dp[W] != x)
		return dp[W];
	return -1;
}

int main ()
{
	read();
	g << solve() << '\n';
	f.close();
	g.close();
	return 0;
}