Cod sursa(job #609274)

Utilizator SteveStefan Eniceicu Steve Data 20 august 2011 14:55:53
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <fstream.h>

#define max(a, b) ((a) > (b) ? (a) : (b))

int main ()
{
	int N, G, W[5010], P[5010], i, j;
	int m[2][10010];

	ifstream fin ("rucsac.in");
	fin >> N >> G;
	for (i = 1; i <= N; i++)
	{
		fin >> W[i] >> P[i];
	}
	fin.close ();

	memset (m, 0, sizeof (m));

	for (j = 1; j <= N; j++)
	{
		for (i = 1; i <= G; i++)
		{
			if (W[j] <= i) m[j % 2][i] = max (m[(j - 1) % 2][i], m[(j - 1) % 2][i - W[j]] + P[j]);
			else m[j % 2][i] = m[(j - 1) % 2][i];
		}
	}

	ofstream fout ("rucsac.out");
	fout << m[N % 2][G];
	fout.close ();
	return 0;
}