Submission #428431

#TimeUsernameProblemLanguageResultExecution timeMemory
428431KarliverKnapsack (NOI18_knapsack)C++14
73 / 100
421 ms262148 KiB
#include <bits/stdc++.h> #define FIXED_FLOAT(x) std::fixed <<std::setprecision(20) << (x) #define all(v) (v).begin(), (v).end() using namespace std; #define forn(i,n) for (int i = 0; i < (n); ++i) #define rforn(i, n) for(int i = (n) - 1;i >= 0;--i) using ll = long long; int mod = (ll)1e9 + 7; #define PI acos(-1) typedef pair<int, int> pairs; const int INF = 1e9 + 1; const int N = 2e5 + 100; const double eps = 1e-7; template <class T> using V = vector<T>; template <class T> using VV = V<V<T>>; template <typename XPAX> void ckma(XPAX &x, XPAX y) { x = (x < y ? y : x); } template <typename XPAX> void ckmi(XPAX &x, XPAX y) { x = (x > y ? y : x); } void solve() { int S, n; cin >> S >> n; V<int> val(n), w(n), k(n); forn(i, n) { cin >> val[i] >> w[i] >> k[i]; } V<int> dp(S + 1, -1); dp[0] = 0; forn(i, n) { int cantake = min(k[i], S / w[i]); cantake--; while(cantake-- > 0) { val.push_back(val[i]); w.push_back(w[i]); } } forn(i, w.size()) { for(int x = S;x > 0;--x) { if(x - w[i] >= 0 && dp[x - w[i]] != -1) ckma(dp[x], dp[x - w[i]] + val[i]); } } cout << *max_element(all(dp)) << '\n'; } void test_case() { int t; cin >> t; forn(p, t) { //cout << "Case #" << p + 1 << ": "; solve(); } } int main() { ios::sync_with_stdio(false); cin.tie(0); solve(); }

Compilation message (stderr)

knapsack.cpp: In function 'void solve()':
knapsack.cpp:7:38: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 |  #define forn(i,n) for (int i = 0; i < (n); ++i)
      |                                      ^
knapsack.cpp:52:3: note: in expansion of macro 'forn'
   52 |   forn(i, w.size()) {
      |   ^~~~
#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...