Cod sursa(job #2505892)

Utilizator AricolSurdu Adrian Aricol Data 7 decembrie 2019 11:38:25
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std;

ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

vector <vector<int>> v;

void umplere(int& n, int& g)
{
	for (int i = 0; i < n+1; i++) {
		vector <int> v2(g+1, -1);
		v.push_back(v2);
	}
}

int main()
{
	int n, g;
	fin >> n >> g;

	umplere(n, g);
	v[0][0] = 0;
	int og, op;
	for (int i = 1; i <= n; i++) {
		fin >> og >> op;
		for (int j = 1; j <= g; j++) {
			if (og <= j) {
				if (v[i-1][j - og] != -1) v[i][j] = max(v[i - 1][j], v[i - 1][j - og] + op);
				else v[i][j] = v[i - 1][j];
			}
			else v[i][j] = v[i - 1][j];
		}
	}

	fout << v[n][g];

	fin.close();
	fout.close();
}