Submission #1303953

#TimeUsernameProblemLanguageResultExecution timeMemory
1303953haron1337Knapsack (NOI18_knapsack)C++17
100 / 100
48 ms3092 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define fi first #define se second #define pb push_back #define ii pair<int , int> #define iii pair<int , pair<int , int>> #define fo(i,l,r) for(int i=l;i<=r;i++) #define fod(i,r,l) for(int i=r;i>=l;i--) #define file "file" const int N = 1e5 + 5, mod = 1e9 + 7; int n , W , cnt[2005] , k[N]; int dp[2005]; struct item { int v , w , k; } a[N]; bool cmp(item a , item b) { return a.v > b.v; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen(file".INP" , "r" , stdin); //freopen(file".OUT" , "w" , stdout); cin >> W >> n; fo(i, 1, W) cnt[i] = W / i; fo(i, 1, n) cin >> a[i].v >> a[i].w >> a[i].k; sort(a + 1 , a + n + 1 , cmp); vector <int> v , w; v.push_back(0); w.push_back(0); int m = 0; fo(i, 1, n) { while (cnt[a[i].w] > 0 && a[i].k > 0) { v.push_back(a[i].v); w.push_back(a[i].w); a[i].k--; cnt[a[i].w]--; m++; } } fo(i, 1, m) fod(j, W, w[i]) { dp[j] = max(dp[j] , dp[j - w[i]] + v[i]); } cout << dp[W]; } // haronnee_
#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...