Submission #1275651

#TimeUsernameProblemLanguageResultExecution timeMemory
1275651almazKnapsack (NOI18_knapsack)C++20
73 / 100
1096 ms2796 KiB
#include <bits/stdc++.h> using namespace std; #define int long long // #define endl '\n' #define ff first #define ss second #define pb push_back #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define ar array const int MOD = 1e9 + 7,INF = 1e18, N = 2e5 + 5; /* 5 2 1 2 2 2 3 2 3 4 2 4 5 2 */ void solve(){ int s , n; cin >> s >> n; vector <int> v(n) , w(n) , k(n); int sum = 0; for(int i = 0;i < n;i++){ cin >> v[i] >> w[i] >> k[i]; sum += w[i] * k[i]; } sum = min(s, sum); vector <int> dp(sum + 1, 0); vector <int> use(sum + 1); dp[0] = 0; for(int i = 0;i < n;i++){ int x = 1; k[i] = min(k[i] ,1ll * 2000); while(k[i] > 0){ int z = min(x , k[i]); for(int j = sum;j >= (w[i] * z);j--){ dp[j] = max(dp[j] , dp[j - (w[i] * z)] + (v[i] * z)); } k[i] -= z; x *= 2; } } int ans = 0; for(int i = 0;i <= sum;i++){ // cout<<dp[i]<<' '; if(dp[i] != INF){ ans = max(ans , dp[i]); } } // cout<<endl; cout<<ans<<endl; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int ti = 1; while (ti--) { solve(); } }
#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...