Submission #1286438

#TimeUsernameProblemLanguageResultExecution timeMemory
1286438ankit94Knapsack (NOI18_knapsack)C++20
0 / 100
1 ms568 KiB
#include<bits/stdc++.h> using namespace std; int t[2005][2005]; int knapsack(int s, int n, vector<int>& V, vector<int>& W, vector<int>& K) { // we have 2 choices // Base case -- smallest possible input if(n == 0 || s == 0) return 0; if(t[n][s] != -1) return t[n][s]; if (W[n - 1] > s) return t[n][s] = knapsack(s, n - 1, V, W, K); int ans = knapsack(s, n-1, V, W, K); for(int i=1;i<=K[n-1];i++) { if(i*W[n-1] <= s) { // we have choices ans = max(i*V[n-1] + knapsack(s-i*W[n-1], n-1, V, W, K), ans); } else break; } return t[n][s] = ans; } int main() { int S; // capacity int N; cin>>S >>N; vector<int> V(N); vector<int> W(N); vector<int> K(N); // it is copies for(int i=0;i<N;i++) { cin>>V[i] >>W[i]>>K[i]; } // now , we have to return cout<< knapsack(S, N, V, W, K) <<endl; }
#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...