Cod sursa(job #608593)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 17 august 2011 14:08:23
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<cstdio>
using namespace std;
int n,G;
int p[5005],g[5005];
int a[10005],b[10005];
int sol;

void Citire()
{
	int i;
	freopen("rucsac.in","r",stdin);
	scanf("%d %d",&n,&G);
	for(i=1;i<=n;i++)
		scanf("%d %d",g+i,p+i);
}

inline int Max(int a,int b)
{
	if(a>b)
		return a;
	return b;
}

void Rezolvare()
{
	int i,j;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=G;j++)
		{
			if(j>=g[i])
				b[j]=Max(a[j],a[j-g[i]]+p[i]);
			else
				b[j]=a[j];
		}
		for(j=1;j<=G;j++)
			a[j]=b[j];
	}
}

void Afisare()
{
	freopen("rucsac.out","w",stdout);
	sol=a[G];
	printf("%d\n",sol);
}

int main()
{
	Citire();
	Rezolvare();
	Afisare();
	return 0;
}