Cod sursa(job #1237646)

Utilizator gabriel.badeaGabriel Badea gabriel.badea Data 4 octombrie 2014 15:46:05
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include<stdio.h>
#include<math.h>
#include<algorithm>

#define NMAX 5005
#pragma warning(push)
#pragma warning(disable: 4996) //4996 for _CRT_SECURE_NO_WARNINGS equivalent

int solutie[2][10010];

int main()
{
	freopen("rucsac.in", "r", stdin);
	freopen("rucsac.out", "w", stdout);

	int numarObiecte, greutateMaxima;
	int greutate[NMAX];
	int profit[NMAX];
	int greutateCurenta;
	int linieAnterioara = 0;
	int liniaCurenta = 1;

	scanf("%d%d", &numarObiecte, &greutateMaxima);

	for (int i = 1; i <= numarObiecte; ++i)
	{
		scanf("%d%d", &greutate[i], &profit[i]);
	}

	for (int i = 1; i <= numarObiecte; ++i, linieAnterioara = liniaCurenta)
	{
		for (int greutateCurenta = 0; greutateCurenta <= greutateMaxima; ++greutateCurenta)
		{
			liniaCurenta = 1 - linieAnterioara;
			solutie[liniaCurenta][greutateCurenta] = solutie[linieAnterioara][greutateCurenta];

			if (greutate[i] <= greutateCurenta)
				solutie[liniaCurenta][greutateCurenta] = std::max(solutie[liniaCurenta][greutateCurenta], solutie[linieAnterioara][greutateCurenta - greutate[i]] + profit[i]);
		}
	}
	printf("%d\n", solutie[linieAnterioara][greutateMaxima]);
	return 0;
}


#pragma warning(pop)