Pagini recente » Cod sursa (job #2965500) | Cod sursa (job #1081283) | Cod sursa (job #3227630) | Cod sursa (job #2573478) | Cod sursa (job #2299842)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");
int dp[10005];
vector <pair <int, int> > V;
int main()
{
int n, g;
fin >> n >> g;
V.push_back(pair <int, int> (0, 0));
for (int i = 1; i <= n; i ++) {
int a, b;
fin >> a >> b;
V.push_back(pair <int, int> (a, b));
}
dp[V[1].first] = V[1].second;
// for (int i = 1; i <= n; i ++) {
// for (int j = 1; j <= g; j ++) {
// if (j - V[i].first < 0) dp[i][j] = dp[i - 1][j];
// else dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - V[i].first] + V[i].second);
// }
// }
for (int k = 2; k <= n; k ++) {
for (int i = g; i > 0; i --) {
if (i - V[k].first > 0) dp[i] = max(dp[i], dp[i - V[k].first] + V[k].second);
}
}
int maxim = 0;
for (int i = 1; i <= g; i ++) {
if (dp[i] > maxim) maxim = dp[i];
}
fout << maxim;
return 0;
}