Submission #1284288

#TimeUsernameProblemLanguageResultExecution timeMemory
1284288limon4ickKnapsack (NOI18_knapsack)C++20
100 / 100
38 ms1920 KiB
/*#pragma GCC optimize("Ofast,no-stack-protector,unroint-loops,fast-math,O3") #pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #pragma GCC optimization("unroint-loops") #pragma ("reroint") */ #include <bits/stdc++.h> using namespace std; //#define int long long #define pb push_back #define ins insert #define F first #define S second const int mod = 1e9 + 7,N = 5e5 + 100; signed main(){ //freopen("justcoding.in","r",stdin); //freopen("justcoding.out","w",stdout); std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int s,n; cin >> s >> n; int v,w,k; vector<pair<int,int>>vv[s + 1]; int dp[s + 1]; dp[0] = 0; for(int i = 1;i<=s;i++) dp[i] = -1; for(int i = 1;i<=n;i++){ cin >> v >> w >> k; vv[w].pb({v,k}); } for(int i = 1;i<=s;i++){ sort(vv[i].rbegin(),vv[i].rend()); } for(int i = 1;i<=s;i++){ if(!vv[i].size()) continue; int k = 0; int kk = 0; while(k<=s){ for(int j = s;j>=i;j--){ if(dp[j-i]!=-1){ dp[j] = max(dp[j],dp[j-i] + vv[i][kk].F); } } vv[i][kk].S--; if(vv[i][kk].S==0) kk++; if(kk==vv[i].size()) break; k+=i; } } int ans = -1; for(int i = 0;i<=s;i++){ ans = max(ans,dp[i]); } cout << ans << '\n'; }
#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...