// PR Bab 13, soal 4 -- pembahasan. #include using namespace std; const int MAKSN = 105; const int MAKSW = 10005; int w[MAKSN], v[MAKSN]; int dp[MAKSN][MAKSW]; int main() { int n, W; cin >> n >> W; for (int i = 1; i <= n; i++) cin >> w[i] >> v[i]; for (int i = 1; i <= n; i++) { for (int b = 0; b <= W; b++) { dp[i][b] = dp[i - 1][b]; // tidak diambil if (b >= w[i] && dp[i - 1][b - w[i]] + v[i] > dp[i][b]) dp[i][b] = dp[i - 1][b - w[i]] + v[i]; // diambil } } cout << dp[n][W] << "\n"; return 0; }