Cod sursa(job #221037)

Utilizator AthanaricCirith Gorgor Athanaric Data 14 noiembrie 2008 10:15:47
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#define N 1005
#define SMAX 10005
#define MAX 50000005
int cost[N],val[N],v[SMAX],s,n;
void citirith()
{
	scanf("%d%d",&n,&s);
	for (int i=1; i<=n; i++)
		scanf("%d%d",&val[i],&cost[i]);
}
int minim()
{
	int i,min=MAX;
	for (i=s; i<SMAX; i++)
		if(v[i]<min)
			min=v[i];
	return min;
}
void rezolvarith()
{
	int i,j;
	for (i=1; i<SMAX; i++)
		v[i]=MAX;
	for (i=1; i<=n; ++i)
	{
        for (j=s-1; j>=1; --j)  
            if (v[j]!=MAX)  
                if (v[j]+cost[i]<v[j+val[i]])  
                    v[j+val[i]]=v[j]+cost[i];  
		if (cost[i]<v[val[i]])  
			v[val[i]]=cost[i];  
	}
	printf("%d\n",minim());
}
int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	citirith();
	rezolvarith();
	
}