Submission #1156895

#TimeUsernameProblemLanguageResultExecution timeMemory
1156895mohsinaKnapsack (NOI18_knapsack)C++20
37 / 100
4 ms1096 KiB


#include <bits/stdc++.h>
using namespace std;
int main()
{
//     The first line of input contains two positive integers, S and N.
// The next N lines of input will each contain three integers, where the i-th line contains Vi
// , Wi
// and Ki
// , the value in SGD, weight in kilograms and number of the i-th item respectively
//For all subtasks, 1 ≤ S ≤ 2000bagWeight, 1 ≤ Vi ≤ 1000000, 1 ≤ Wi ≤ S.
    int bagWeight=0,items=0;
    cin>>bagWeight>>items;
    vector<int> values(items,0),weights(items,0),counts(items,0);
    for(int i=0;i<items;i++){
        cin>>values[i]>>weights[i]>>counts[i];
    }
    // vector<vector<int>> dp(items,vector<int> (bagWeight+1,-1));
    // for(int i=0;i<items;i++){
    //     dp[i][0]=0;
    // }
    vector<vector<int>> dp(items,vector<int>(bagWeight+1,0));
    dp[0][0]=0;
    for(int i=0;i<items;i++){
      //picking 0 to k items
        int currWeight=0;
        int currValue=0;
        for(int k=counts[i];k>=0;k--){
            currWeight=k*weights[i];
            currValue=k*values[i];
            // cout<<k<<" curr{w,v} "<<currWeight<<" "<<currValue<<"\n";
            for(int j=bagWeight;j>=currWeight;j--){
                if(i>0){
                  dp[i][j]=max(dp[i][j],currValue+dp[i-1][j-currWeight]);
                }else{
                 dp[i][j]=max(dp[i][j],currValue);
                }
            }
          
       }
    //   cout<<"at i "<<i<<"\n";
    //      for(int i=0;i<=bagWeight;i++){
    //              cout<<dp[i]<<" ";
    //      }
    //      cout<<"\n";
      
    }
    // cout<<"done\n";
    // for(int i=0;i<=bagWeight;i++){
    //   cout<<dp[i]<<" ";
     
    // }
    // cout<<"\n";
    cout<<dp[items-1][bagWeight]<<"\n";
    // vector<int> dp(bagWeight+1,0);
    //for a given bagWeight,what is maximum value we can get
    // for(int i=0;i<items;i++){
    //     for(int j=bagWeight;j>=0;j++){
            
    //     }
    // }
//     15 5
// 4 12 1
// 2 1 1
// 10 4 1
// 1 1 1
// 2 2 1
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...