Cod sursa(job #590336)

Utilizator daniel.florinPitis Daniel-Florin daniel.florin Data 16 mai 2011 21:32:45
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <cstdio>
#define MIN(a,b)((a)<(b) ? (a):(b))

int w,i,j,gen,tot,x[1001],y[1001],a[1001][5001];

int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d",&gen);
	scanf("%d",&w);
	
	for(i=1;i<=gen;i++) scanf("%d %d",&x[i],&y[i]);
	for(i=1;i<=gen;i++) tot+=x[i];
	if(tot<w)
	{
		printf("-1");
		return 0;
	}	
	for(i=1;i<=w;i++)
		a[0][i]=1000000;
	
	for(i=1;i<=gen;i++)
	{
		for(j=1;j<=w;j++)
		{
			if(x[i]>j)
				a[i][j]=MIN(a[i-1][j], y[i]);
			else
				a[i][j]=MIN(a[i-1][j],a[i-1][j-x[i]]+y[i]);
		}
	}
	printf("%d",a[gen][w]);
	return 0;
}