Pagini recente » Cod sursa (job #1701194) | Borderou de evaluare (job #1389586) | Cod sursa (job #1989213) | distoreznuue | Cod sursa (job #2376878)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
const int N_MAX = 5e3, G_MAX = 5e4;
int n, g;
int gr, pr;
int ans;
int dp[G_MAX + 2];
int main() {
in >> n >> g;
for(int i = 1; i <= g; i++)
dp[i] = -1;
for(int i = 1; i <= n; i++) {
in >> gr >> pr;
for(int j = g; j >= 0; j--)
if(dp[j] != -1 && j + gr <= g)
dp[j + gr] = max(dp[j + gr], dp[j] + pr);
}
for(int i = 1; i <= g; i++)
ans = max(ans, dp[i]);
out << ans << '\n';
return 0;
}