Cod sursa(job #609273)

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

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

int main ()
{
	short N, G, W[5000], P[5000], i, j;
	long m[2][10000];

	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;
}