Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: Quaoar
Problemset: laracroft
Language: cpp
Time: 0.005 second
Submitted On: 2026-03-04 21:04:49
#include <bits/stdc++.h>
using namespace std;
int dp[501][2001];
int main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n , W;
cin >> n >> W;
vector <int> price(n);
vector <int> weight(n);
vector <int> select;
for (int i = 0 ; i < n ; i++) cin >> price[i];
for (int i = 0 ; i < n ; i++) cin >> weight[i];
for (int i = 1 ; i <= n ; i++){
for (int j = 1 ; j <= W ; j++){
if (j >= weight[i - 1]){
dp[i][j] = max(dp[i-1][j - weight[i-1]] + price[i-1] , dp[i-1][j]);
} else {
dp[i][j] = dp[i - 1][j];
}
}
}
/*
for (int i = 0 ; i <= n ; i++){
for (int j = 0 ; j <= W ; j++){
cout << dp[i][j] << " ";
}
cout << "\n";
}
*/
int min_weight;
for (int i = W ; i > 0 ; i--){
if (dp[n][W] == dp[n][i]){
min_weight = i;
}
}
if (dp[n][W] == 0){
cout << 0 << " " << 0;
return 0;
}
cout << dp[n][W] << " " << min_weight;
return 0;
}