# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
866586 | 12345678 | Knapsack (NOI18_knapsack) | C++17 | 1089 ms | 1372 KiB |
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;
const int nx=2e3+5;
int s, n, v, w, k, dp[2][nx], mx;
priority_queue<int, vector<int>, greater<int>> pq[nx];
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin>>s>>n;
for (int i=0; i<n; i++)
{
cin>>v>>w>>k;
for (int j=0; j<min(k, s/w); j++)
{
pq[w].push(v);
if (pq[w].size()>s/w) pq[w].pop();
}
}
vector<pair<int, int>> d;
for (int i=1; i<=s; i++)
{
while (!pq[i].empty())
{
auto x=pq[i].top();
pq[i].pop();
d.push_back({i, x});
}
}
for (int i=0; i<d.size(); i++)
{
int c=i%2, p=1-c;
v=d[i].second; w=d[i].first;
//cout<<v<<' '<<w<<'\n';
for (int j=1; j<=s; j++)
{
dp[c][j]=dp[p][j];
if (j>=w) dp[c][j]=max(dp[c][j], dp[p][j-w]+v);
mx=max(mx, dp[c][j]);
}
}
cout<<mx;
}
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... |