#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
#define pb push_back
#define ii pair<int , int>
#define iii pair<int , pair<int , int>>
#define fo(i,l,r) for(int i=l;i<=r;i++)
#define fod(i,r,l) for(int i=r;i>=l;i--)
#define file "file"
const int N = 1e5 + 5, mod = 1e9 + 7;
int n , W , cnt[2005] , k[N];
int dp[2005];
struct item
{
int v , w , k;
} a[N];
bool cmp(item a , item b)
{
return a.v > b.v;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
//freopen(file".INP" , "r" , stdin);
//freopen(file".OUT" , "w" , stdout);
cin >> W >> n;
fo(i, 1, W)
cnt[i] = W / i;
fo(i, 1, n)
cin >> a[i].v >> a[i].w >> a[i].k;
sort(a + 1 , a + n + 1 , cmp);
vector <int> v , w;
v.push_back(0);
w.push_back(0);
int m = 0;
fo(i, 1, n)
{
while (cnt[a[i].w] > 0 && a[i].k > 0)
{
v.push_back(a[i].v);
w.push_back(a[i].w);
a[i].k--;
cnt[a[i].w]--;
m++;
}
}
fo(i, 1, m)
fod(j, W, w[i])
{
dp[j] = max(dp[j] , dp[j - w[i]] + v[i]);
}
cout << dp[W];
}
// haronnee_
| # | 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... |