Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- #include <vector>
- #include <set>
- #include <map>
- #include <sstream>
- #include <cstdio>
- #include <algorithm>
- #include <stack>
- #include <queue>
- #include <cmath>
- #include <iomanip>
- #include <fstream>
- using namespace std;
- typedef long long ll;
- const int maxn = 1e5 + 1;
- const int MOD = 1e9 + 7;
- const int INF = 2e9 + 10;
- int main(int argc, const char *argv[]){
- ios_base::sync_with_stdio(false);
- int n, x;
- cin >> n >> x;
- vector<int> price(n), pages(n);
- for(int &x : price) {
- cin >> x;
- }
- for(int &x : pages) {
- cin >> x;
- }
- vector<vector<int> > dp(n + 1, vector<int>(x + 1, -INF));
- dp[0][x] = 0;
- for(int i = 0; i < n; ++i) {
- for(int p = x; p >= 0; --p) {
- if(p - price[i] >= 0) {
- dp[i + 1][p - price[i]] = max(dp[i + 1][p - price[i]], dp[i][p] + pages[i]);
- }
- dp[i + 1][p] = max(dp[i + 1][p], dp[i][p]);
- }
- }
- int ret = -INF;
- for(int i = 0; i <= x; ++i) {
- ret = max(ret, dp[n][i]);
- }
- cout << ret << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment