CCCPaste

Untitled

#include 
#include 
#include 
#include 
#include 
using namespace  std;
typedef long long ll;

int main() {
    int N, W;
    cin >> N >> W;
    vector val(N), wt(N);
    for(int i = 0; i < N; i++) {
        cin >> val[i] >> wt[i];
    }
    vector dp(W + 5, -2e9);
    dp[W] = 0;
    
    for(int weight = W; weight >= 0; weight--) {
        for(int i = 0; i < N; i++) {
            if(weight - wt[i] >= 0) {
                dp[weight - wt[i]] = max(dp[weight - wt[i]], dp[weight] + val[i]);
            }
        }
    }
    int result = -2e9;
    for(int i = 0; i <= W; i++) {
        result = max(result, dp[i]);
    }
    if(result == -2e9) result = 0;
    cout << result << endl;
    return 0;
}
/*
 3 8
 3 30
 4 50
 5 60
 
 140: 12
 139 = inf
 138 = inf
 
 110: 9
 90: 8
 80: 7
 60: 5
 50: 4
 30: 3
 */