Submission
Status:
[PPPPPPPPPPPPPPP]
Subtask/Task Score:
{100/100}
Score: 100
User: goine
Problemset: laracroft
Language: cpp
Time: 0.004 second
Submitted On: 2026-03-22 08:20:55
#include<bits/stdc++.h>
using namespace std;
int main() {
int item_count, capacity;
cin >> item_count >> capacity;
vector<int> values(item_count + 1);
vector<int> weights(item_count + 1);
for (int i = 1; i <= item_count; i++) {
cin >> values[i];
}
for (int i = 1; i <= item_count; i++) {
cin >> weights[i];
}
vector<vector<int>> dp(item_count + 1, vector<int>(capacity + 1));
for (int item_index = 1; item_index <= item_count; item_index++) {
for (int weight = 0; weight <= capacity; weight++) {
dp[item_index][weight] = dp[item_index - 1][weight];
if (weight >= weights[item_index]) {
dp[item_index][weight] = max(
dp[item_index][weight],
dp[item_index - 1][weight - weights[item_index]] + values[item_index]
);
}
}
}
int answer = capacity;
for (int i = capacity - 1; i >= 0; i--) {
if (dp[item_count][i] < dp[item_count][capacity]) {
break;
}
answer = i;
}
cout << dp[item_count][capacity] << ' ' << answer;
return 0;
}