#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2024;
int n, s,dp[N];
priority_queue<int> pq[N];
vector<int> a[N];
void solve() {
cin>>s>>n;
for(int i=1;i<=n;i++) {
int v,w,k;
cin>>v>>w>>k;
k=min(k,s/w);
while(k--) {
pq[w].push(v);
if((int)pq[w].size()>s/w)pq[w].pop();
}
}
for(int w=1;w<=s;w++) {
while(pq[w].size()) {
a[w].push_back(pq[w].top());
pq[w].pop();
}
reverse(a[w].begin(),a[w].end());
}
for(int w=1;w<=s;w++){
for(int i=s;i>=w;i--) {
int k=0,v=0;
for(auto x:a[w]){
k++;
v+=x;
if(i-w*k<0)break;
dp[i]=max(dp[i],dp[i-w*k]+v);
}
}
}
cout<<dp[s]<<'\n';
}
signed main() {
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
solve();
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... |