Cod sursa(job #702575)

Utilizator misinozzz zzz misino Data 1 martie 2012 23:09:20
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include<cstdio>
using namespace std;
FILE *f,*g;
int i,j,maxi,x,y,n,w,b[5001];
int main()
{f=fopen("energii.in","r");
g=fopen("energii.out","w");
fscanf(f,"%d%d",&n,&w);
b[0]=1;
maxi=0;
for(i=1;i<=n;++i)
{fscanf(f,"%d%d",&x,&y);
for(j=maxi;j>=0;--j)
	if(j==0)
	{if(b[x]>y||b[x]==0)
		b[x]=y;
	if(maxi<b[x])
		maxi=b[x];
	}
	else
		if(b[j]!=0&&j+x<=w)
		{if(b[j+x]==0||b[j+x]>b[j]+y)
			b[j+x]=b[j]+y;
		if(b[j+x]>maxi)
			maxi=b[j+x];
		}}
if(b[w]==0)
	fprintf(g,"-1\n");
else
fprintf(g,"%d\n",b[w]);
fclose(f);
fclose(g);
return 0;
}