Cod sursa(job #1379730)

Utilizator andrei_diaconuAndrei Diaconu andrei_diaconu Data 6 martie 2015 19:11:46
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <fstream>
#define NMax 5010
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n, G, d[2][10001], ind;
struct obiect
{
	int w;
	int p;
}o[NMax];

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

int main()
{
	f >> n >> G;
	for (int i = 1; i <= n; i++)
		f >> o[i].w >> o[i].p;
	ind = 0;
	for (int i = 1; i <= n; i++) {
		for (int j = 0; j <= G; j++) {
			d[ind][j] = d[1 - ind][j];
			if (j >= o[i].w)
				d[ind][j] = getmax(d[ind][j], d[1 - ind][j - o[i].w] + o[i].p);
		}
		ind = 1 - ind;
	}
	g << d[1][G];
}