Cod sursa(job #373113)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 12 decembrie 2009 17:55:39
Problema Energii Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.49 kb
#include <stdio.h>

long v[5001],g,w,i,j,e,c,cnt;

int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%ld%ld",&g,&w);
	for (i=1;i<g+1;i++)
	{
		scanf("%ld%ld",&e,&c);
		if (c==0) cnt+=e;
		for (j=w;j>-1;j--)
		{
			if (((v[j]!=0)||(j==0))&&((v[e+j]==0)||(v[e+j]>v[j]+c)))
				if (e+j<w) v[e+j]=v[j]+c;
				else if ((v[w]>v[j]+c)||(v[w]==0)) v[w]=v[j]+c;
		}

	}
	if (v[w]==0) v[w]=-1;
	if (cnt>=w) v[w]=0;
	printf("%ld",v[w]);
	return 0;
}