Cod sursa(job #2714909)

Utilizator IoanaNadIoana Nadia Puiu IoanaNad Data 2 martie 2021 18:21:13
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

void readingItems(vector<pair<int, int>>& items, int& N, int& G) {
	ifstream fin("rucsac.in");
	int W, P;
	fin >> N >> G;
	for (int i = 0; i < N; ++i) {
		fin >> W >> P;
		items.push_back(pair<int, int>(W, P));
	}
}

int maxValue(vector<pair<int, int>>& items, int N, int G) {
	++G;
	vector<int> temp(G, 0);
	for (int i = 0; i < N; ++i) {
		vector<int> currentTemp(G, 0);
		for (int j = 1; j < G; ++j) {
			if (items[i].first > j)
				currentTemp[j] = temp[j];
			else
				currentTemp[j] = max(temp[j], items[i].second + temp[j - items[i].first]);
		}
		temp = currentTemp;
	}
	return temp[G - 1];
}

int main() {
	int N, G;
	vector<pair<int, int>> items;
	readingItems(items, N, G);
	ofstream fout("rucsac.out");
	fout << maxValue(items, N, G);
	return 0;
}