Submission #1287780

#TimeUsernameProblemLanguageResultExecution timeMemory
1287780eri16Knapsack (NOI18_knapsack)C++20
73 / 100
1096 ms2612 KiB
#include <bits/stdc++.h> using namespace std; void subtask_1(int wmax,int n, vector<int> v, vector <int> w, vector <int> k){cout<<min(k[0],wmax/w[0])*v[0];} void subtask_2(int wmax,int n, vector<int> v, vector <int> w, vector <int> tt){ int dp[wmax+1]; for (int i=0; i<=wmax; i++){dp[i]=-1;} dp[0]=0; for (int i=0; i<n; i++){ for (int j=wmax; j>=0; j--){ if (dp[j]!=-1){ int t=1; for (int k=j+w[i]; t<=tt[i] && k<=wmax; k+=w[i]){ dp[k]=max(dp[k],dp[j]+t*v[i]); t++; } } } } int mx=0; for (int i=0; i<=wmax; i++){ mx=max(mx,dp[i]); } cout<<mx; } int main(){ int wmax,n; cin>>wmax>>n; vector <int> V(n),W(n),K(n); for (int i=0; i<n; i++){ cin>>V[i]>>W[i]>>K[i]; } if (n==1)subtask_1(wmax,n,V,W,K); else{subtask_2(wmax,n,V,W,K);} }
#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...