Cod sursa(job #676477)

Utilizator daniel.florinPitis Daniel-Florin daniel.florin Data 9 februarie 2012 09:59:08
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>

const int MaxN=5005;
const int MAX=1<<30;

int W,CGi,EGi,G,sol,cost[MaxN];

int minim(int a, int b)
{
	if(a>b) return b;
	return a;
}

int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	for(register int i=0;i<MaxN;++i)
	{
		cost[i]=MAX;
	}
	scanf("%d",&G);
	scanf("%d",&W);
	cost[0]=1;
	for(register int i=0;i<G;++i)
	{
		//fin>>EGi>>CGi;
		scanf("%d %d",&EGi,&CGi);
		for(register int j=MaxN-1;j>=0;--j)
		{
			if(cost[j]!=MAX)
			{
				int pos=j+EGi;
				if(pos>W)
				{
					pos=W;
				}
				cost[pos]=minim(cost[pos],cost[j]+CGi);
			}
		}
	}

	if(cost[W]==MAX)
	{
		cost[W]=0;
	}
	printf("%d",cost[W]-1);
	return 0;
}