Cod sursa(job #2484218)

Utilizator Iulia25Hosu Iulia Iulia25 Data 30 octombrie 2019 19:23:52
Problema Problema rucsacului Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.53 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int n, g, Max, dp[5005];
pair <int, int> a[5005];

int main()	{
  fin >> n >> g;
  for (int i = 1; i <= n; ++i)
		fin >> a[i].first >> a[i].second;
	sort (a + 1, a + n + 1);
	for (int i = n; i; --i)	 {
    for (int j = g; j; --j)	 {
			if (dp[j - a[i].first] || j == a[i].first)	{
				dp[j] = max(dp[j], dp[j - a[i].first] + a[i].second);
				if (Max < dp[j])
					Max = dp[j];
			}
    }
	}
	fout << Max;
	return 0;
}