Cod sursa(job #608591)

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

void Citire()
{
	int i;
	ifstream fin("rucsac.in");
	fin>>n>>G;
	for(i=1;i<=n;i++)
		fin>>g[i]>>p[i];
	fin.close();
}

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()
{
	//int i;
	ofstream fout("rucsac.out");
	/*for(i=1;i<=G;i++)
		sol=Max(sol,a[i]);*/
	sol=a[G];
	fout<<sol<<"\n";
	fout.close();
}

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