Cod sursa(job #417485)

Utilizator drywaterLazar Vlad drywater Data 14 martie 2010 14:06:37
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.51 kb
#include <stdio.h>
int n,w,a[1001],b[1001],i,j;
long long dp[5001],s;
FILE *f=fopen("energii.in","r"),*g=fopen("energii.out","w");
int main(void)
{
	fscanf(f,"%d%d",&n,&w);
	for (i=1;i<=n;i++)
	{	fscanf(f,"%d%d",&a[i],&b[i]); s=s+a[i]; dp[a[i]]=b[i];}
	if (s>=w)
	{
		for (i=1;i<=n;i++)
		{
			for (j=1;j<=w-a[i];j++)
			{
				if (dp[j]!=0 && (dp[j+a[i]]>dp[j]+b[i] || dp[j+a[i]]==0))
					dp[j+a[i]]=dp[j]+b[i];
			}
		}
		fprintf(g,"%lld",dp[w]);
	}
	else fprintf(g,"-1");
	fclose(g);
	return 0;
}