Submission #1284554

#TimeUsernameProblemLanguageResultExecution timeMemory
1284554zesanul_islamKnapsack (NOI18_knapsack)C++20
0 / 100
1 ms784 KiB
#include <iostream> #include <vector> #include <algorithm> using ll = long long; int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int N, W; std::cin >> N >> W; std::vector<int> v(N+1), w(N+1); std::vector<ll> k(N+1); for (int i = 1; i <= N; ++i) std::cin >> v[i] >> w[i] >> k[i]; // order: value, weight, count std::vector<int> vals, weights; for (int i = 1; i <= N; ++i) { ll cnt = k[i], pw = 1; while (cnt > 0) { ll take = std::min(pw, cnt); vals.push_back(v[i] * take); weights.push_back(w[i] * take); cnt -= take; pw <<= 1; } } std::vector<ll> dp(W+1, 0); int M = (int)vals.size(); for (int i = 0; i < M; ++i) { int wi = weights[i], vi = vals[i]; if (wi > W) continue; for (int j = W; j >= wi; --j) dp[j] = std::max(dp[j], dp[j - wi] + vi); } ll ans = 0; for (int j = 0; j <= W; ++j) ans = std::max(ans, dp[j]); std::cout << ans << '\n'; 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...