Submission #1294424

#TimeUsernameProblemLanguageResultExecution timeMemory
1294424linussKnapsack (NOI18_knapsack)C++20
73 / 100
1094 ms584 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long vector<ll> solve(ll x, vector<ll> &res){ res.clear(); for (ll p = 1; p <= x; p <<= 1){ res.push_back(p); x -= p; } if (x > 0) res.push_back(x); return res; } int main(){ iostream::sync_with_stdio(false); cin.tie(nullptr); int s, n; cin >> s >> n; vector<ll> dp(s+1, 0); for (int i = 0; i<n; i++){ ll a, b, c; cin >> a >> b >> c; if (b>s){continue;} vector<ll> res; solve(c, res); for (ll x : res){ ll n1 = b*x; ll a1 = a*x; for (ll j = s; j>n1; j--){ if (dp[j-n1]!=0) dp[j]=max(dp[j-n1] + a1, dp[j]); } if (n1<s+1) dp[n1] = max(dp[n1], a1); } } // for (auto i : dp){ // cout << i << " "; // } // cout << "\n"; ll m = 0; for (auto i : dp){ m = max(m, i); } cout << m; 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...