#include <bits/stdc++.h>
using namespace std;
long long f[2005];
vector<int> w;
vector<int> v;
int a,b;
vector<int> pos[1000005];
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> b >> a;
for (int i=1;i<=a;i++){
int x,y,t;
cin >> y >> x >> t;
t=min(b/x,t);
int pow=1;
while (t>=pow ){
t-=pow;
int val=y*pow;
int cost=x*pow;
pos[cost].push_back(val);
pow*=2;
}
if (t>0){
int val=y*t;
int cost=x*t;
pos[cost].push_back(val);
}
}
for (int i=1;i<=b;i++){
if (pos[i].size()==0){
continue;
}
sort(pos[i].rbegin(),pos[i].rend());
}
for (int j=1;j<=b;j++){
for (int i=b;i>=1;i--){
int prefix=0;
int cur=0;
int cur1=0;
while (cur1<pos[j].size() && i-cur-j>=0){
cur+=j;
prefix+=pos[j][cur1];
f[i]=max(f[i],f[i-cur]+prefix);
cur1++;
}
}
}
cout << f[b] << "\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... |