This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define f cin
#define g cout
using namespace std;
/*ifstream f("knap.in");
ofstream g("knap.out");*/
vector<vector<int>> used;
vector<int> dp, weight, value;
int s, n, result;
int main(){
f>>s>>n;
used.resize(s+1,vector<int>(n+1,0));
weight.resize(n+1);
value.resize(n+1);
for(int i=1;i<=n;i++){
f>>value[i]>>weight[i]>>used[0][i];
}
dp.resize(s+1,0);
for(int i=1;i<=s;i++){
int mx=0, mxv=0;
for(int j=1;j<=n;j++){
int k=i-weight[j];
if(k>=0 && dp[k]+value[j]>mxv && used[k][j]>0){
mx=j;
mxv=dp[k]+value[j];
}
}
int k=i-weight[mx];
for(int j=1;j<=n;j++)
if(j==mx)
used[i][j]=used[k][j]-1;
else
used[i][j]=used[k][j];
dp[i]=mxv;
if(mxv>result)
result=mxv;
}
g<<result<<'\n';
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... |