Cod sursa(job #1008203)

Utilizator ioanapopaPopa Ioana ioanapopa Data 10 octombrie 2013 16:46:30
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;

struct element
{
	int greutate;
	int valoare;
};
class Rucsac
{
	element *v;
	int n;
	int greutate_max;
	int *dynamic_vector;
	int valoare_maxima;
public:
	void citire()
	{
		ifstream f("rucsac.in");
		f >> n >> greutate_max;
		v = new element[n];
		dynamic_vector = new int[greutate_max];
		for (int i = 0; i < n; i++)
			f >> v[i].greutate >> v[i].valoare;
	}
	int rezolvare()
	{
		valoare_maxima = 0;
		for (int i = 0; i <= greutate_max; i++)
			dynamic_vector[i] = 0;
		for (int i = 0; i < n;i++)
		for (int j = greutate_max; j>=v[i].greutate; j--)
		{
			dynamic_vector[j] = max(dynamic_vector[j], dynamic_vector[j - v[i].greutate] + v[i].valoare);
			if (valoare_maxima < dynamic_vector[j])
				valoare_maxima = dynamic_vector[j];
		}
		return valoare_maxima;
	}
	void afisare()
	{
		ofstream g("rucsac.out");
		g << rezolvare();
	}
};

int main()
{
	Rucsac Ion;
	Ion.citire();
	Ion.afisare();
	return 0;
}