Submission
Status:
[PPP-SSSSSSSSSSS]
Subtask/Task Score:
{0/100}
Score: 0
User: onlyme910
Problemset: laracroft
Language: cpp
Time: 0.002 second
Submitted On: 2026-03-24 11:22:54
#include <bits/stdc++.h>
using namespace std;
int dp[505][2005];
int main(){
int n,mass;cin >> n >> mass;
vector<int> price(n+1);
vector<int> kg(n+1);
vector<pair<int,int>> item(n+1);
for(int i = 1;i<= n;i++)cin >> price[i];
for(int j = 1;j<=n;j++)cin >> kg[j];
for(int i = 1;i<= n;i++)item[i] = {kg[i],price[i]};
for(int i = 1;i<=n;i++){
for(int j = 1;j<=mass;j++){
if(item[i].first > j)dp[i][j] = dp[i-1][j];
else if(item[i].first == j){
dp[i][j] = max(item[i].second,dp[i-1][j]);
}
else{
dp[i][j] = max(item[i].second+dp[i-1][j-item[i].first],dp[i-1][j]);
}
}
}
int sum = 0;
int ch = mass;
for(int i = n;i>0;i--){
if(dp[i-1][ch] != dp[i][ch]){
if (dp[i][ch] != dp[i - 1][ch]) {
sum += kg[i];
ch -= kg[i]; // หักน้ำหนักออกแล้วไปดูไอเทมก่อนหน้า
}
}
}
cout << dp[n][mass] <<" " << sum;;
}