Cod sursa(job #3354707)

Utilizator oana75Ioana Prunaru oana75 Data 19 mai 2026 22:09:10
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream f("rucsac.in");
ofstream g("rucsac.out");

int main() {
	int n, weight;

	f >> n >> weight;

	vector<int> w(n + 1), p(n + 1);
	for (int i = 1; i <= n; i++) {
		f >> w[i] >> p[i];
	}

	vector<vector<int>> dp(n + 1, vector<int>(weight + 1, 0));
	// dp[i][j] = profitul maxim obtinut din primele i obiecte cu greutatea totala cel mult j

	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= weight; j++) {
			if (w[i] > j) {
				dp[i][j] = dp[i - 1][j];
			} else {
				dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - w[i]] + p[i]);
			}
		}
	}

	g << dp[n][weight];

	f.close();
	g.close();
	return 0;
}