#include <bits/stdc++.h>
using namespace std;
#define speedup ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
int main()
{
speedup;
int s,n;
cin>>s>>n;// max wt limit, and total typof items
vector<pair<int,int>> item (n+1);// cotly, weight
vector<int> freq (n+1);
for(int i=1;i<=n;i++)
{
int cost,wt,k;
cin>>cost>>wt>>k;//input
item[i]={cost,wt};//setting the item values
freq[i]=k;
}
// for(int i=1;i<=n;i++)cout<<item[i].first<<" "<<item[i].second<<" "<<freq[i]<<"\n";
if(n==1)// special case to calculate for subtask 1 which has any k val but n=i-1
{
int curr_wt=item[1].second;
int temp=s/curr_wt;
if(temp>=freq[1]) cout<<freq[1]*item[1].first;
else cout<<temp*item[1].first;
}
else
{
vector<vector<int>> dp(n+1, vector<int> (s+1,0));//definition
for(int i=1;i<=n;i++)
{
for(int wt=1;wt<=s;wt++)
{
int itr=freq[i];//no of times ith item can be chosen
for(int j=1;j<=itr;j++)
{
if((item[i].second*j)<=wt)
dp[i][wt]=max(dp[i][wt], dp[i-1][wt-(item[i].second*j)]+item[i].first*j);
}
dp[i][wt]=max(dp[i][wt], dp[i-1][wt]);
}
}
// for(int i=1;i<=n;i++)
// {
// for(int wt=1;wt<=s;wt++)
// {
// cout<<dp[i][wt]<<" ";
// }
// cout<<"\n";
// }
cout<<dp[n][s];
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |