Submission #1218707

#TimeUsernameProblemLanguageResultExecution timeMemory
1218707pauloaphKnapsack (NOI18_knapsack)C++20
49 / 100
4 ms328 KiB
#include<iostream> #include<algorithm> #include <cmath> using namespace std; int main(){ int C; int n; cin >> C >> n; unsigned int v; unsigned int w; unsigned int b; vector<long long int> NW, NV; for(int i = 0; i < n; i++){ int x = 1; cin >> v >> w >> b; while(b > x){ b -= x; NW.push_back(x * w); NV.push_back(x * v); x = x << 1; } NW.push_back(w * b); NV.push_back(v * b); } long long dp[2][C+1]; int prev = 0, act = 1; // caso base : quando nao temos mais itens for ( int c = 0; c <= C; ++c ) dp[prev][c] = 0; for ( int i = NW.size() - 1; i >= 0; --i ){ for ( int c = 0; c <= C; ++c ){ dp[act][c] = dp[prev][c]; if(NW[i] <= c ) { dp[act][c] = max( dp[act][c], dp[prev][c - NW[i]] + NV[i] ); } } swap( act, prev ); } cout << dp[prev][C] << 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...