Submission #1137264

#TimeUsernameProblemLanguageResultExecution timeMemory
1137264gadunKnapsack (NOI18_knapsack)C++20
73 / 100
461 ms327680 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace __gnu_pbds; using namespace std; using ll = long long; const int MOD = 13371337; const int INF = INT_MAX; const int MAXN = 1e9; #define ci pair<char,ll> #define ii pair<ll,ll> #define iii pair<ll, pair<ll, ll>> #define fi first #define mp(x,y) make_pair(x, y) #define se second #define show(x) cerr << #x << " is " << x << endl; #define f0r(n) for(int i = 0; i < n; i++) //#define int long long int32_t main(){ ios::sync_with_stdio(0); cin.tie(0); int s, n; cin >> s >> n; vector<vector<int>> v(s+1); for (int i =1 ; i <= n; i++){ int val, weight, amt; cin >> val >> weight >> amt; for (int j = 0; j < min(s/weight,amt); j++){ v[weight].push_back(val); } } for (int i = 1; i <= s; i++){ sort(v[i].begin(), v[i].end(), greater<int>()); } int dp[s+1]; memset(dp, 0, sizeof dp); for (int i = 1; i <= s; i++){ for (int amt = 0; amt < min((int)v[i].size(), s/i); amt++){ for (int j = s; j >= 1; j--){ if (j >= i) dp[j] = max(dp[j], dp[j-i] + v[i][amt]); dp[j] =max(dp[j], dp[j-1]); } } } int ans = -1e9; for (int j = 0; j <= s;j ++){ ans = max(ans, dp[j]); } cout << ans << endl; }
#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...