Cod sursa(job #2484223)

Utilizator Iulia25Hosu Iulia Iulia25 Data 30 octombrie 2019 19:29:16
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.58 kb
#include <cstdio>
#include <algorithm>

using namespace std;

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

int main()	{
	freopen("rucsac.in", "r", stdin);
	freopen("rucsac.out", "w", stdout);
  scanf("%d%d", &n, &g);
  for (int i = 1; i <= n; ++i)
		scanf("%d%d", &a[i].first, &a[i].second);
	sort (a + 1, a + n + 1);
	for (int i = n; i; --i)	 {
    for (int j = g; j >= a[i].first; --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];
			}
    }
	}
	printf("%d", Max);
	return 0;
}