Pagini recente » Cod sursa (job #442070) | Cod sursa (job #168931) | Cod sursa (job #1513603) | Cod sursa (job #2414195) | Cod sursa (job #2484223)
#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;
}