Submission #820173

#TimeUsernameProblemLanguageResultExecution timeMemory
820173upedKnapsack (NOI18_knapsack)C++14
73 / 100
219 ms262144 KiB
// // Created by MiłoszK on 11.08.2023. // // Two Sets II #include<bits/stdc++.h> using namespace std; using ll = long long; vector<ll> sieve(ll n) { vector<bool> is_prime(n + 1, true); is_prime[0] = is_prime[1] = false; for (ll i = 2; i <= n; i++) { if (is_prime[i] && (long long) i * i <= n) { for (ll j = i * i; j <= n; j += i) is_prime[j] = false; } } vector<ll> primes; for (ll i = 2; i <= n; ++i) { if (is_prime[i]) { primes.push_back(i); } } return primes; } void fastio() { ios_base::sync_with_stdio(false); cin.tie(nullptr); } void fileio(const string &name) { freopen((name + ".in").c_str(), "r", stdin); freopen((name + ".out").c_str(), "w", stdout); } //ll MOD = 1e9 + 7; //ll TWO_MOD_INV = 500000004; struct Item { int value; int weight; int amount; }; int main() { vector<Item> items; int s, n; cin >> s >> n; items.resize(n); for (int i = 0; i < n; ++i) { int v, w, k; cin >> v >> w >> k; items[i] = {v, w, k}; } vector<vector<int>> dp(s + 1, vector<int>(n + 1)); for (int i = n - 1; i >= 0; --i) { for (int j = 0; j <= s; ++j) { for (int k = 0; k <= items[i].amount; ++k) { if (j - items[i].weight * k >= 0) { dp[j][i] = max(dp[j][i], dp[j - items[i].weight * k][i + 1] + items[i].value * k); } else { break; } } } } // vector<int> dp2(s + 1); // for (int i = n - 1; i >= 0; --i) { // for (int j = s; j >= 0; --j) { // for (int k = 0; k <= items[i].amount; ++k) { // if (j - items[i].weight >= 0) { // dp2[j] = max(dp2[j], dp2[j - items[i].weight * k] + items[i].value * k); // } // } // } // } cout << dp[s][0]; return 0; }

Compilation message (stderr)

knapsack.cpp: In function 'void fileio(const string&)':
knapsack.cpp:36:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   36 |     freopen((name + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
knapsack.cpp:37:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |     freopen((name + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...