Cod sursa(job #469551)

Utilizator loginLogin Iustin Anca login Data 8 iulie 2010 11:48:04
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
# include <fstream>
# define MAX 2000000000
using namespace std;
int n, w, E[1003], C[1003], u[5003][1003], v[5003];

void read ()
{
	ifstream fin ("energii.in");
	fin>>n>>w;
	for(int i=1;i<=n;++i)
		fin>>E[i]>>C[i];
}

void solve ()
{
	int c;
	for(int i=1;i<=w;++i)
		v[i]=MAX;
	for(int i=1;i<=w;++i)
	{
		c=0;
		for(int j=1;j<=n;++j)
			if (i-E[j]>=0 && !u[i-E[j]][j] && v[i-E[j]]+C[j]<v[i])
			{
				c=j;
				v[i]=v[i-E[j]]+C[j];
				u[i][j]=1;
			}
		if (c)
			for(int k=1;k<=n;++k)
				u[i][k]=u[i-E[c]][k];
	}
}

int main()
{
	read ();
	solve ();
	ofstream fout ("energii.out");
	if (v[w]==MAX)
		fout<<"-1";
	else
		fout<<v[w];
	return 0;
}