# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1145379 | blueviolet | Knapsack (NOI18_knapsack) | C++20 | 45 ms | 1608 KiB |
#include <bits/stdc++.h>
#define ll long long
#define pll pair<ll, ll>
#define pii pair<int, int>
#define io(x) if (fopen(x".inp","r")) {freopen(x".inp","r",stdin),freopen(x".out","w",stdout);}
#define mem(c, x) memset(c, x, sizeof(c))
#define all(c) c.begin(), c.end()
#define bit(i,j) ((i >> j) & 1)
#define pb push_back
#define se second
#define fi first
#define el '\n'
using namespace std;
template<class T> bool maximize(T &a, const T &b) { return (a < b ? a = b, 1 : 0); }
template<class T> bool minimize(T &a, const T &b) { return (a > b ? a = b, 1 : 0); }
int dx[8] = {0, 1, 0,-1, 1, 1,-1,-1};
int dy[8] = {1, 0,-1, 0, 1,-1,-1, 1};
const int maxn = 2e3 + 1;
const int Inf = 2e9 + 7;
const ll Infll = 1e18 + 9;
const ll Mod = 1e9 + 7;
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
ll dp[2][maxn];
int n, s;
vector<pii> WeightGroup[maxn];
void solve() {
cin >> s >> n;
for (int i=1; i<=n; i++) {
int v, w, sl; cin >> v >> w >> sl;
if (w <= s && sl) WeightGroup[w].pb({v, sl});
}
int step = 1;
for (int w=1; w<=s; w++) {
sort(all(WeightGroup[w]), greater<pii>());
int num = 0;
ll sum = 0;
for (auto item : WeightGroup[w]) {
for (int i=1; i<=item.se; i++) {
if (1ll * (num+1) * w > s) break;
num++;
sum += item.fi;
for (int j=s; j>=num * w; j--) {
maximize(dp[step & 1][j], dp[1 - (step & 1)][j]);
maximize(dp[step & 1][j], dp[1 - (step & 1)][j - num * w] + sum);
}
}
}
if ((int)WeightGroup[w].size() >= 1) step++;
}
cout << dp[1 - (step & 1)][s];
}
signed main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
io("task");
solve();
return (0 ^ 0);
}
Compilation message (stderr)
# | 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... |