Pagini recente » Cod sursa (job #3330893) | Cod sursa (job #3300639) | Cod sursa (job #3302255) | Borderou de evaluare (job #2084321) | Cod sursa (job #3313901)
#include <bits/stdc++.h>
using namespace std;
/**
* Problem: Problema rucsacului
* URL: https://www.infoarena.ro/problema/rucsac
* TL: 200 ms
* ML: ${memoryLimit} MB
*/
#define MULTITEST 0
#define int long long
inline void tc() {
int n, g; cin >> n >> g;
vector<vector<int>> dp(n + 1, vector<int>(g + 1));
vector<pair<int, int>> v(n + 1);
for (int i = 1; i <= n; i ++) {
cin >> v[i].first >> v[i].second;
}
for (int i = 1; i <= n; i ++) {
for (int j = 1; j <= g; j ++) {
if (j >= v[i].first) {
dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - v[i].first] + v[i].second);
}
else {
dp[i][j] = dp[i - 1][j];
}
}
}
cout << dp[n][g] << '\n';
}
#define FILEIO 1
#define FILE "rucsac"
signed main() {
#if FILEIO && !defined(LOCAL)
freopen(FILE ".in", "r", stdin);
freopen(FILE ".out", "w", stdout);
#endif
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
#if MULTITEST == 1
int tt;
cin >> tt;
while (tt--) {
tc();
}
#else
tc();
#endif
return 0;
}