제출 #1136832

#제출 시각아이디문제언어결과실행 시간메모리
1136832b1t_exeKnapsack (NOI18_knapsack)C++20
73 / 100
1095 ms5892 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int t = 1; // Number of test cases while (t--) { int x, n; cin >> x >> n; // Maximum weight capacity and number of items vector<vector<int>> arr(n, vector<int>(3)); // Item details: value, weight, max quantity for (int i = 0; i < n; i++) { cin >> arr[i][0]; // Value of item cin >> arr[i][1]; // Weight of item cin >> arr[i][2]; // Maximum quantity of item } vector<int> dp(x + 1, 0); // DP array to store max profit for each capacity // Process each item for (int i = 0; i < n; i++) { int value = arr[i][0]; int weight = arr[i][1]; int maxQuantity = arr[i][2]; // Process for bounded quantity for (int capacity = x; capacity >= weight; capacity--) { for (int quantity = 1; quantity <= maxQuantity && quantity * weight <= capacity; quantity++) { dp[capacity] = max(dp[capacity], quantity * value + dp[capacity - quantity * weight]); } } } cout << dp[x] << endl; // Maximum profit for capacity x } 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...