Submission

Status:
[PPPPPPPPPPPPPPP]

Score: 100

User: a0ms1n

Problemset: laracroft

Language: cpp

Time: 0.009 second

Submitted On: 2025-04-13 00:24:43

#include <bits/stdc++.h>
using namespace std;
#define int long long

signed main() {
    int n, w;
    cin >> n >> w;
    int v[n], ww[n];
    for (int i = 0; i < n; i++) cin >> v[i];
    for (int i = 0; i < n; i++) cin >> ww[i];

    vector<vector<int>> dp(n + 1, vector<int>(w + 1, 0));

    for (int i = 1; i <= n; i++) {
        for (int j = 0; j <= w; j++) {
            if (ww[i - 1] <= j) {
                dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - ww[i - 1]] + v[i - 1]);
            } else {
                dp[i][j] = dp[i - 1][j];
            }
        }
    }

    int max_val = dp[n][w];
    int min_weight = -1;

    for (int j = 0; j <= w; j++) {
        if (dp[n][j] == max_val) {
            min_weight = j;
            break;
        }
    }

    if (max_val == 0) {
        cout << "0 0" << endl;
    } else {
        cout << max_val << " " << min_weight << endl;
    }

    return 0;
}