Cod sursa(job #703486)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 2 martie 2012 12:36:15
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<fstream>
#include<algorithm>
#define NMAX 10010

using namespace std;

ifstream f("rucsac.in");
ofstream g("rucsac.out");

int n, G, best[2][NMAX], vz[NMAX];
struct greu
{
	int x, y;
}a[NMAX];

bool cmp(greu a, greu b)
{
	return a.x<b.x;
}

void Citeste()
{
	int i=1;
	f>>n>>G;
	for (i=1; i<=n; ++i) f>>a[i].x>>a[i].y;
}

void Solve()
{
	int i, mx=-100, j, lin;
	for (i=1; i<=n; ++i)
		for (j=1; j<=G; ++j)
		{
			lin=i%2;
			best[lin][j]=best[1-lin][j];
			if (a[i].x<=j) best[lin][j]=max(best[lin][j], best[1-lin][j-a[i].x]+a[i].y);
		}
	for (i=1; i<=G; ++i)
		mx=max(mx, best[n%2][i]);
	g<<mx<<"\n";
}

int main()
{
	Citeste();
	Solve();
	f.close();
	g.close();
	return 0;
	 }