Cod sursa(job #2750343)

Utilizator cristia_razvanCristia Razvan cristia_razvan Data 10 mai 2021 21:11:54
Problema Problema rucsacului Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>
using namespace std;

const string filename = "rucsac";

using ll = long long;

ifstream fin(filename + ".in");
ofstream fout(filename + ".out");

const int mxn = 5000;

int n, gmx;
int dp[2][mxn + 5];

int g[mxn + 5], p[10005];


int main()
{

	bool sw = true;

	fin >> n >> gmx;
	for (int i = 1; i <= n; ++i)
		fin >> g[i] >> p[i];
	int ans = 0;

	for (int i = 1; i <= n; ++i, sw = !sw)
		for (int j = 1; j <= gmx; ++j) {
			if (g[i] > j)
				dp[sw][j] = dp[!sw][j];
			else dp[sw][j] = max(dp[!sw][j], dp[!sw][j - g[i]] + p[i]);
			ans = max(ans, dp[sw][j]);
		}

	fout << ans << '\n';

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