#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int s, n;
cin >> s >> n;
vector<int> a, b;
priority_queue<pair<int, int>> pq[2001];
for(int i = 0;i<n;i++){
int p, w, m;
cin >> p >> w >> m;
pq[w].push({p, m});
}
for(int i = 1;i<=2000;i++){
int k = 0;
while(!pq[i].empty()){
auto [p, m] = pq[i].top();
while(k <= 2000 / i && m != 0){
a.push_back(p);
b.push_back(i);
--m;
++k;
}
pq[i].pop();
}
}
// for(auto v : a) cerr << v << ' ';
// cerr << '\n';
// for(auto v : b) cerr << v << ' ';
int sz = a.size();
vector<int> dp(s + 1), prev(s + 1);
for(int i = 1;i<=sz;i++){
for(int j = 1;j<=s;j++){
if(j >= b[i - 1]){
dp[j] = max(prev[j], prev[j - b[i - 1]] + a[i - 1]);
}
}
swap(dp, prev);
}
cout << prev[s] << '\n';
}
# | 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... |