Cod sursa(job #589853)

Utilizator valentin.harsanValentin Harsan valentin.harsan Data 14 mai 2011 09:51:31
Problema Energii Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<stdio.h>

int g,w,x[1001][2],y[5001],min=100000;
bool z[5001];

int main() {
	int i,j;
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d%d",&g,&w);
	z[0]=true;
	for(i=1;i<=5000;++i)
		y[i]=1000000;
	for(i=1;i<=g;++i)
	{
		scanf("%d%d",&x[i][0],&x[i][1]);
		for(j=5000-x[i][0];j>=0;--j)
		{
			if(z[j] && y[j+x[i][0]]>y[j]+x[i][1])
			{
				z[j+x[i][0]]=true;
				y[j+x[i][0]]=y[j]+x[i][1];
			}
		}
	}
	for(i=w;i<=5000;++i) {
		if(z[i] && y[i]<=min)
			min=y[i];
	}
	if(min==100000)
		printf("-1");
	else
		printf("%d",min);
	return 0;
}