Cod sursa(job #138043)

Utilizator savimSerban Andrei Stan savim Data 17 februarie 2008 20:04:21
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <stdio.h>
long i,j,n,s,min;
long en[5010],g[5010][2];
int main()
{
	freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
	scanf("%ld",&n);
	scanf("%ld",&s);

	for (i=1; i<=n; i++)
		scanf("%ld %ld",&g[i][0],&g[i][1]);
    
    min=2000000000;
    for (i=1; i<=s; i++) en[i]=2000000000;

    for (i=1; i<=n; i++)
    {
		for (j=1; j<=s; j++)
        {
            if (j+g[i][0]<s && en[j+g[i][0]]>en[j]+g[i][1]) en[j+g[i][0]]=en[j]+g[i][1];            
			if (j+g[i][0]>=s && min>en[j]+g[i][1]) min=en[j]+g[i][1];
        }
		if (g[i][0]>=s && g[i][1]<min) min=g[i][1];
		if (g[i][0]<s && g[i][1]<en[g[i][0]]) en[g[i][0]]=g[i][1];
    }

	printf("%ld\n",min);
        
    return 0;    
}