This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<ll,ll>;
constexpr int maxs = 2e3 + 1;
pii dp[maxs];
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int s, n;
cin >> s >> n;
vector<array<ll, 3>> items(n);
for (auto &p : items) cin >> p[0] >> p[1] >> p[2];
// v w k
for (const auto &item : items)
{
for (int p = 0; p <= s; p++)
{
for (int k = 1; k <= item[2]; k++) {
if (p + k * item[1] <= s)
{
dp[p + k * item[1]].second = max(dp[p + k * item[1]].second, dp[p].first + k * item[0]);
} else break;
}
dp[p].first = dp[p].second;
}
}
//for (int i = 0; i <= s; i++) cout << dp[i].first << "\n";
cout << (*max_element(begin(dp), end(dp))).first << "\n";
}
/*
for position:
for weight:
pos + w = max(pos + value)
*/
# | 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... |