Cod sursa(job #477136)

Utilizator vladtarniceruVlad Tarniceru vladtarniceru Data 13 august 2010 15:59:55
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
# include <cstdio>
# include <algorithm>
# define  N  1001
using namespace std;
    int S,G,W,e[N],c[N],sol[N*20],i,j,S2,sum,minim=1000000000,sum2,x[N],SUA;
    int main (){
		freopen ("energii.in","r",stdin);
		freopen ("energii.out","w",stdout);
		scanf ("%d%d",&G,&W);
		for (i=1;i<=W;++i) sol[i]=1000000000;
		for (i=1;i<=G;++i){
			scanf ("%d%d",&e[i],&c[i]);
			SUA+=e[i];
		}
		if (SUA<W){
			printf ("-1\n");
			return 0;
		}
		x[0] = 1;
        sol[0] = 0;
        x[ e[1] ] = 1;
        sol[ e[1] ] = c[1];
		for (i=2;i<=G;++i)
			for (j=W;j>=0;--j)
				if (x[j]){
					sum=j+e[i];
					sum2=sol[j]+c[i];
					if (sum>W){
						x[W]=1;
						sol[W]=min (sol[W],sum2);
					}
					else{
						x[sum]=1;
						sol[sum]=min (sol[sum],sum2);
					}
				}
		printf ("%d\n",sol[W]);
		return 0;
	}