Submission #1258226

#TimeUsernameProblemLanguageResultExecution timeMemory
1258226alizhanKnapsack (NOI18_knapsack)C++20
0 / 100
1 ms328 KiB
#include <bits/stdc++.h> using ll = long long; using namespace std; const int mod = 1000000007; #define endl '\n' #define skip continue #define uno first #define duo second #define YES cout<<"YES"<<'\n' #define NO cout<<"NO"<<'\n' #define GO while(tt--) #define ins insert #define pb push_back #define all(x) x.begin(), x.end() #define forest signed #define Kaldun cin.tie(0)->sync_with_stdio(0) #define int long long int bp(int a, int n) { if(n == 0) return 1; if(n % 2 == 1) return (bp(a, n-1) * 1LL * a) % mod; long long b = bp(a, n/2); return (b * b) % mod; } signed main() { //freopen("time.in", "r", stdin); //freopen("time.out", "w", stdout); Kaldun; int s,n; cin>>s>>n; vector<pair<int,int>>g[5000]; int v[n+1],w[n+1],k[n+1]; for(int i=1;i<=n;i++){ cin>>v[i]>>w[i]>>k[i]; g[w[i]].push_back({v[i],k[i]}); } for(int i=1;i<=s;i++) sort(g[i].begin(),g[i].end()); vector<int>dp(s+1,INT_MIN); dp[0]=0; for(int i=1;i<=n;i++){ for(int x=1;x<=(s/i);x++){ if(g[i].size()==0) break; for(int j=s;j>=i;j--){ if(dp[j-i]==INT_MIN) continue; dp[j]=max(dp[j],dp[j-i]+g[i][g[i].size()-1].first); } g[i][g[i].size()-1].second--; if (g[i][g[i].size()-1].second==0)g[i].pop_back(); } } int ans=0; for(int i=1;i<=s;i++){ ans=max(dp[i],ans); } 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...