Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll long long
- using namespace std;
- ll memo[110][100010];
- const ll INF = 1e11+10;
- int v[110], w[110];
- int N, W;
- ll dp(int i, int cap){
- if(cap < 0) return -INF;
- if(i == N) return 0;
- if(memo[i][cap] != -1) return memo[i][cap];
- return memo[i][cap] = max(dp(i+1,cap-w[i])+v[i], dp(i+1,cap));
- }
- int main(){
- scanf("%d %d", &N, &W);
- memset(memo, -1, sizeof memo);
- for(int i = 0; i < N; i++){
- scanf("%d %d", &w[i], &v[i]);
- }
- printf("%lld", dp(0,W));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement