Cod sursa(job #2634792)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 12 iulie 2020 12:59:44
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <algorithm>
#include <fstream>
#include <cstring>>
using namespace std;

int n, g, p[10010], w[10010], pmax[10010];


int main()
{
	ifstream cin("rucsac.in");
	ofstream cout("rucsac.out");
	cin >> n;
	cin >> g;
	for (int i = 1; i <= n; i++)
	{
		cin >> w[i] >> p[i];
	}

	for (int i = 1; i <= n; ++i)
	{
		for (int j = g; j > 0; j--)
		{
			int new_j = j + w[i];
			if (pmax[j] && new_j <=g)
			{
				if (!pmax[new_j] || pmax[new_j] < pmax[j] + p[i])
				{
					pmax[new_j] = pmax[j] + p[i];
				}
			}
		}

		if (!pmax[w[i]] || pmax[w[i]] <  p[i])
		{
			pmax[w[i]] = p[i];
		}
	}

	int rez = 0;
	for (int i = g; i >= 1; i--)
	{
		if (pmax[i] > rez)
		{
			rez = pmax[i];
		}
	}

	cout << rez<<"\n";
	return 0;
}