Cod sursa(job #806622)

Utilizator dariusdariusMarian Darius dariusdarius Data 3 noiembrie 2012 10:41:29
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include<stdio.h>
#include<string.h>
int d[50005];
struct Obj {int g,p;};
Obj a[5005];
int main()
{
	freopen("rucsac.in","r",stdin);
	freopen("rucsac.out","w",stdout);
	int n,g,i,j;
	scanf("%d%d",&n,&g);
	for(i=1;i<=n;i++)
		scanf("%d%d",&a[i].g,&a[i].p);
	for(i=1;i<=g;i++)
		d[i]=-1;
	for(i=1;i<=n;i++)
		for(j=g;j>=0;j--)
			if(d[j]!=-1 && a[i].g+j<=g && d[a[i].g+j]<d[j]+a[i].p)
				d[a[i].g+j]=d[j]+a[i].p;
	int max=0;
	for(i=0;i<=g;i++)
		if(d[i]>max)
			max=d[i];
	printf("%d\n",max);
	return 0;
}