Cod sursa(job #559205)

Utilizator razvan2006razvan brezulianu razvan2006 Data 17 martie 2011 17:58:06
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<stdio.h>
#define NRMAX 1001
#define INF 1000000001

typedef struct elem
{
	long pos, cost;
};

elem Knp[NRMAX * 10], E[NRMAX];
long i, j, n, G, W;

int main()
{
	freopen("energii.in", "rt", stdin);
	freopen("energii.out", "wt", stdout);
	
	scanf("%ld%ld", &G, &W);
	
	for(i = 1; i <= G; i++)
		scanf("%ld%ld", &E[i].pos, &E[i].cost);
	
	for(i = 1; i <= W; i++)
		Knp[i].cost = INF;
	
	int x;
	Knp[0].pos = 1;
	Knp[0].cost = 0;
	for(i = W; i >= 1; i--)
		for(j = 1; j <= G; j++)
		{	
			if(i - E[j].pos < 0)
				x = 0;
			else 
				x = i - E[j].pos;
			
			if(Knp[i].cost > E[j].cost + Knp[x].cost)
			{
				Knp[i].pos = 1;
				Knp[i].cost = E[j].cost + Knp[x].cost;
			}
		}
		
	printf("%ld\n", Knp[W].cost);

	return 0;
}