Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //#include "bits/stdc++.h"
- //#include "bits/stdc++.h"
- #include <iostream>
- //speed coding
- #define mp make_pair
- #define cve(tpy) for (auto i : tpy) {for(auto j : i){cout << j << " "; }cout << "\n";} ;
- #define f first
- #define s second
- #define loop(i, x, n) for (ll i = x; i < n; i++)
- #define joop(x, n) for (ll j = x; j < n; j++)
- #define lp(n) for (ll i = 0; i < n; i++)
- #define err cout << "ERROR" << endl;
- #define all(x) x.begin(), x.end()
- #define pb push_back
- #define sz(x) x.size()
- #define rndm rng()
- // types
- #define pii pair<int, int>
- #define pll pair<ll, ll>
- #define vvi vector<vector<int>>
- #define vvll vector<vector<ll>>
- typedef long long ll;
- typedef long double ld;
- // types of data
- #define inf 1000000000
- #define infll 1000000000000000000
- #define INF ll(1e18)
- //#define md 998244353
- #define mod 1000000009
- #define K 239017
- //#define DEBUG 1
- using namespace std;
- //mt19937_64 rng(time(nullptr));
- //uniform_int_distribution<ll> drist;
- // ferma
- // a^(p-2) = 1/a mod p
- // a^p = a mod p
- void solve() {
- int n, W;
- cin >> n >> W;
- ll *w{new ll[n]}, *c{new ll[n]}, *d {new ll[W+1]};
- loop(i, 0, n) cin >> w[i];
- loop(i, 0, n) cin >> c[i];
- loop(i, 0, W+1) d[i] = -INF;
- d[0] = 0;
- loop(i, 0, n){
- ll *d2{new ll[W+1]};
- loop(j, 0, W+1){
- d2[j] = d[j];
- }
- for(int s = 0; s+w[i] <= W; s++){
- d2[s+w[i]] = max(d2[s+w[i]], d[s] + c[i]);
- }
- loop(j, 0, W+1){
- d[j] = d2[j];
- }
- delete []d2;
- }
- ll ans = -INF;
- loop(i, 0, W+1){
- ans = max(ans, d[i]);
- }
- cout << ans;
- }
- int main() {
- ios::sync_with_stdio(0);
- cin.tie(0);
- #ifdef DEBUG
- freopen("text.txt", "r", stdin);
- #endif
- solve();
- return 0;
- }
Add Comment
Please, Sign In to add comment