Submission #501936

#TimeUsernameProblemLanguageResultExecution timeMemory
501936alexddKnapsack (NOI18_knapsack)C++17
100 / 100
134 ms3752 KiB
#include<iostream> #include<algorithm> using namespace std; struct element { int v,w,k; }; element num[1000001],newv[1000001]; int dp[1000001],dp2[1000001]; bool fr[2001]; bool cmp(element x, element y) { if(x.w<y.w) return 1; if(y.w<x.w) return 0; if(x.v<y.v) return 0; if(y.v<x.v) return 1; return 0; } int main() { int s,n; cin>>s>>n; for(int i=0;i<n;i++) { cin>>num[i].v>>num[i].w>>num[i].k; fr[num[i].w]=1; } sort(num,num+n,cmp); int poz=0,cnt=0; bool bl=0; for(int i=0;i<n;i++) { if(i==0 || num[i].w!=num[i-1].w) { cnt=0; bl=0; for(int j=1;j<=num[i].k;j++) { if(cnt+1>s/num[i].w) break; cnt++; poz++; newv[poz]=num[i]; } } else { if(cnt+1>s/num[i].w) continue; for(int j=1;j<=num[i].k;j++) { if(cnt+1>s/num[i].w) break; cnt++; poz++; newv[poz]=num[i]; } } } for(int i=1;i<=poz;i++) { for(int j=0;j<=s;j++) { if(j+newv[i].w>s) continue; dp2[j+newv[i].w]=max(dp2[j+newv[i].w], dp[j]+newv[i].v); } for(int j=1;j<=s;j++) { dp[j]=dp2[j]; } } int maxim=-1; for(int i=1;i<=s;i++) { if(dp[i]>maxim) maxim=dp[i]; } cout<<maxim; }

Compilation message (stderr)

knapsack.cpp: In function 'int main()':
knapsack.cpp:34:10: warning: variable 'bl' set but not used [-Wunused-but-set-variable]
   34 |     bool bl=0;
      |          ^~
#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...