#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx2,popcnt,lzcnt,abm,bmi,bmi2,fma,tune=native")
using namespace __gnu_pbds;
using namespace std;
typedef long long ll;
#define change_io() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define el endl
#define all(x) begin(x), end(x)
#define pb push_back
#define mp make_pair
#define INF 1000000005
#define LLINF 1e18
#define MOD 1000000007
#define MOD9 998244353
// remove single val from multiset with -> os.find_by_order(os.order_of_key(x))
typedef tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
typedef tree<ll, null_type, less_equal<ll>, rb_tree_tag, tree_order_statistics_node_update> ordered_multiset;
typedef tree<pair<ll, ll>, null_type, less<pair<ll, ll>>, rb_tree_tag, tree_order_statistics_node_update> ordered_pair_set;
const ll N5 = 1e5 + 5;
const ll N6 = 1e6 + 5;
const ll NN5=2e5+5;
const ll N3=1e3+5;
ll dp[2005] {};
#define int ll
void solve()
{
int s, n; cin >> s >> n;
ll v[n], k[n], w[n];
map<int, set<array<ll, 2>>> items;
for (int i = 0; i < n; ++i) {
cin >> v[i] >> w[i] >> k[i];
items[w[i]].insert({-1*v[i], k[i]});
}
for (int i = 1; i <= s; ++i) {
if (items[i].empty()) continue;
ll considered = 0;
while (!items[i].empty() && considered < s/i) {
auto num = (*items[i].begin());
items[i].erase(items[i].begin());
if (num[1] != 1) {
items[i].insert({num[0], num[1]-1});
}
for (int j = s; j >= i; --j) {
dp[j] = max(dp[j], dp[j-i]-num[0]);
}
considered++;
}
}
ll ans = 0;
for (int i = 0; i <= s; ++i) {
ans = max(ans, dp[i]);
}
cout << ans << el;
}
int32_t main()
{
//freopen("problemname.in", "r", stdin);
//freopen("problemname.out", "w", stdout);
change_io();
ll T;
T=1;
//cin>>T;
while (T--)
{
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... |