#include <bits/stdc++.h>
using namespace std;
#define sz size()
#define nah "No\n"
#define yeah "Yes\n"
#define F first
#define S second
#define int long long
#define pb push_back
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
const int inf=1e13;
const int N=1e6+7;
const int mod=1e9+7;
int dp[2001];
int us[N];
signed main() {
ios_base::sync_with_stdio(false);cin.tie(nullptr);
// freopen("snakes.in","r",stdin);
// freopen("snakes.out","w",stdout);
int n,k;
cin>>k>>n;
vector<pair<pair<int,int>,int>>v;
for(int i=1;i<=n;i++) {
pair<pair<int,int>,int> b;
int c,w,a;
cin>>c>>w>>a;
b.F.F=c;
b.F.S=w;
b.S=a;
v.pb(b);
}
sort(rall(v));
dp[0]=0;
for(int i=1;i<=k;i++) dp[i]=-inf;
for(auto b:v) {
int c=b.F.F,w=b.F.S,a=b.S;
for(int l=1;l<=min(k,a);l++) {
if(us[w]>2000/w) break;
for(int j = k;j >= w; j--) {
dp[j] = max(dp[j],dp[j - w] + c);
}
us[w]++;
}
}
int ans=-inf;
for(int i = 0;i <= k; i++) {
ans=max(ans, dp[i]);
}
cout<<ans;
}
# | 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... |