제출 #1294422

#제출 시각아이디문제언어결과실행 시간메모리
1294422linussKnapsack (NOI18_knapsack)C++20
73 / 100
1096 ms580 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long vector<ll> solve(ll x){ vector<ll> r; for (ll p = 1; p <= x; p <<= 1){ r.push_back(p); x -= p; } if (x > 0) r.push_back(x); return r; } 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; for (ll x : solve(c)){ 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...