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:34

#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;;
}