Submission #1257958

#TimeUsernameProblemLanguageResultExecution timeMemory
1257958alizhanKnapsack (NOI18_knapsack)C++20
73 / 100
1095 ms3492 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; int v[n+1],w[n+1],k[n+1]; for(int i=1;i<=n;i++){ cin>>v[i]>>w[i]>>k[i]; k[i]=min(k[i],s/w[i]); } int dp[s+1]{}; for(int i=1;i<=n;i++){ for(int j=s;j>=w[i];j--){ int pop=k[i],p=0; while(pop>0){ p++; pop--; if(j<w[i]*p) break; dp[j]=max(dp[j],dp[j-w[i]*p]+v[i]*p); } } } cout<<dp[s]; }
#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...