Submission

Status:
[PPPPPPPPPPPPPPP]

Score: 100

User: a0ms1n

Problemset: laracroft

Language: cpp

Time: 0.008 second

Submitted On: 2025-04-12 23:58:02

#include <bits/stdc++.h>

using namespace std;

#define int long long

signed main() {
  int n, w;
  cin >> n >> w;

  vector<int> v(n);
  for (int i = 0; i < n; i++) {
    cin >> v[i];
  }

  vector<int> wt(n);
  for (int i = 0; i < n; i++) {
    cin >> wt[i];
  }

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

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

  int max_val = dp[n][w];
  int min_wt = 0;

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

  cout << max_val << " " << min_wt << endl;

  return 0;
}