Cod sursa(job #598946)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 27 iunie 2011 16:35:17
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>

#define Infinit 1000000000

using namespace std;

int E[1005], C[1005], Best[1005][5005], N, W;

int main ()
{
	freopen ("energii.in", "r", stdin);
	freopen ("energii.out", "w", stdout);
	
	scanf ("%d%d", &N, &W);
	for (int i=1; i<=N; ++i)
	{
		scanf ("%d%d", &E[i], &C[i]);
	}
	
	for (int i=0; i<=N; ++i)
	{
		for (int j=1; j<=W; ++j)
		{
			Best[i][j]=Infinit;
		}
	}
	
	for (int i=1; i<=N; ++i)
	{
		for (int j=1; j<=W; ++j)
		{
			if (E[i]<=j)
			{
				Best[i][j]=min (Best[i-1][j], Best[i-1][j-E[i]]+C[i]);
			}
			else
			{
				Best[i][j]=min (Best[i-1][j], C[i]);
			}
		}
	}
	
	if (Best[N][W]==Infinit)
	{
		printf ("%d\n", -1);
	}
	else
	{
		printf ("%d\n", Best[N][W]);
	}
	return 0;
}