Submission #1127142

#TimeUsernameProblemLanguageResultExecution timeMemory
1127142epictrolltoastKnapsack (NOI18_knapsack)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h> #define vec vector #define pp pair<int, vector<int>> using namespace std; int32_t main(){ int s, n; cin >> s >> n; vec<int> prices, weight, number; for(int i = 0; i < n; i++){ int p ,w ,n; cin >> p >> w >> n; prices.push_back(p); weight.push_back(w); number.push_back(n); } vec<pair<int, vec<int>>> storage; //Value, list of items storage.reserve(s + 10); for (int i = 0; i < s; i++) { vec<int> buffs; buffs.reserve(n); storage.push_back(make_pair(0, buffs)); } vec<int> toAdd; for(int i = 0; i < n; i++){ toAdd.push_back(0); } storage[0].second = toAdd; for(int i = 0; i < s; i++){ if(storage[i].second.size() != 0 || storage[i].first > 0){ for(int j = 0; j < n; j++){ if(storage[i].second[j] < number[j]){ int target = i + weight[j]; if(target <= s){ int value = storage[i].first + prices[j]; if(value > storage[target].first){ storage[target].first = value; storage[target].second.clear(); for(int l: storage[i].second) storage[target].second.push_back(l); storage[target].second[j]++; } } } } } } int max = 0; for(int i = 0; i < s; i++){ if(max < storage[i].first) max = storage[i].first; } cout << max << endl; 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...