Cod sursa(job #828604)

Utilizator RaduDoStochitoiu Radu RaduDo Data 3 decembrie 2012 23:12:10
Problema Problema rucsacului Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 5005
#define maxg 10005
using namespace std;
struct str {int g,v;} a[maxn];
int T[maxn][maxg],n,G,i,s;

int cmp(str a,str b)
{
	return (a.g<b.g);
}

int main()
{
	freopen("rucsac.in","r",stdin);
	freopen("rucsac.out","w",stdout);
	scanf("%d%d",&n,&G);
	for(i=1;i<=n;++i)
		scanf("%d%d",&a[i].g,&a[i].v);
	sort(a+1,a+n+1,cmp);
	for(i=1;i<=n;++i)
		for(s=0;s<=G;++s)
			if(a[i].g<=s)
				T[i][s]=max(T[i-1][s],T[i-1][s-a[i].g]+a[i].v);
			else
				T[i][s]=T[i-1][s];
	printf("%d\n",T[n][G]);
	return 0;
}