Cod sursa(job #3692)

Utilizator shadowmanAlex Matei shadowman Data 27 decembrie 2006 20:09:32
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>

int main()
{
	int i, j, g, w;
	int* eg;
	int* cg;
	int* c;
	int p = -1;

	freopen("energii.in", "rt", stdin);
	freopen("energii.out", "wt", stdout);

	scanf("%d%d", &g, &w);

	eg = new int[g];
	cg = new int[g];
	c = new int[ (2 * w) + 1 ];
	c[0] = 1;

	for(i = 0; i < g; i++)
	{
		scanf("%d%d", &eg[i], &cg[i]);
	}

	for(i = 0;  i < g; i++)
	{
		for(j = 2 * w; j >= eg[i]; j--)
		{
			if(c[j - eg[i]] && (!c[j] || (c[j - eg[i]] + cg[i] < c[j])))
			{
				c[j] = c[j - eg[i]] + cg[i];
				if(j >= w) p = j;
			}
		}
	}

	if(p)
	{
		printf("%d\n", c[p] - 1);
	}
	else
	{
		printf("-1\n");
	}

	return 0;
}