Cod sursa(job #144952)

Utilizator MegaheroDan Cearnau Megahero Data 28 februarie 2008 10:23:26
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
#define INF 5000000
int e[1002],c[1002],n,u,cost[5005];
void citire()
{
	freopen("energii.in","r",stdin);
	scanf("%d",&n);
	scanf("%d",&u);
	for (int i=0;i<n;i++)
	{
		scanf("%d",&e[i]);
		scanf("%d",&c[i]);
	}
}
inline int f(int x){
	if(x>u)
		x=u;
	return x;
}
void parcurgere()
{
	int i,j;
	for(j=1;j<=u;++j)
		cost[j]=INF;
	for (i=0;i<n;i++){
		for(j=u-1;j>=0;--j)
			if(cost[j]+c[i]<cost[f(j+e[i])])
				cost[f(j+e[i])]=cost[j]+c[i];
	}
}
void afisare()
{
	freopen("energii.out","w",stdout);
	if (cost[u]==INF)
		printf("-1\n");
	else
		printf("%d\n",cost[u]);
}
int main()
{
	citire();
	parcurgere();
	afisare();
	return 0;
}