Submission #682984

#TimeUsernameProblemLanguageResultExecution timeMemory
682984vjudge1Knapsack (NOI18_knapsack)C++17
73 / 100
1086 ms15856 KiB
#include <bits/stdc++.h> #define int long long #define ii pair<int,int> #define iii pair<int,ii> #define ff first #define ss second using namespace std; const int maxn=1e6+5,inf=1e18; int n,m,nn,k,p,q; int b[maxn],a[maxn],c[maxn],ans; int dp[maxn]; void solve() { cin>>m>>nn; for (int i=1,x,y,z;i<=nn;i++) { cin>>x>>y>>z; z=min(z,(m/y)+1); for (int j=0;j<=30 && z>=(1<<j);j++) { n++; a[n]=(1<<j)*x; b[n]=(1<<j)*y; z-=1<<j; } if (z) n++,a[n]=z*x,b[n]=y*z; } ans=0; for (int i=1;i<=n;i++) for (int j=m;j>=b[i];j--) { dp[j]=max(dp[j],dp[j-b[i]]+a[i]); ans=max(ans,dp[j]); } cout<<ans; } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); solve(); }
#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...