Submission #438601

#TimeUsernameProblemLanguageResultExecution timeMemory
438601HaidaraKnapsack (NOI18_knapsack)C++17
73 / 100
1082 ms41860 KiB

        #include<bits/stdc++.h>
        using namespace std;
        const int maxn=100002;
        int s,n,v[maxn],w[maxn],k[maxn],dp[maxn][2002];
        int solve(int inx=0,int curr=0)
        {
            if(dp[inx][curr])
                return dp[inx][curr];
            if(inx==n)
                return 0;
          for(int i=0;i<=k[inx];i++)
            {
                if(curr+i*w[inx]<=s)
                    dp[inx][curr]=max(dp[inx][curr],solve(inx+1,curr+i*w[inx])+i*v[inx]);
              	else break;
            }
            return dp[inx][curr];
        }
        signed main()
        {
            cin>>s>>n;
            for(int i=0;i<n;i++)
            {
                cin>>v[i]>>w[i]>>k[i];
                k[i]=min(k[i],s/w[i]);
            }
            cout<<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...