Submission #847766

#TimeUsernameProblemLanguageResultExecution timeMemory
847766vjudge1Bank (IZhO14_bank)C++17
100 / 100
147 ms8872 KiB
#include <bits/stdc++.h> using namespace std; const int N = 21, M = (1 << 20) + 4; int n, m, a[N], b[N]; pair<int, int> memo[M]; pair<int, int> solve(int msk) { if(!msk) return {0, 0}; auto &ret = memo[msk]; if(~ret.first) return ret; ret = {0, 0}; for(int j = 0; j < m ; ++j) { if((msk >> j) & 1) { auto cur = solve(msk - (1 << j)); if(cur.second + b[j] == a[cur.first]) cur.first++, cur.second = 0; else cur.second += b[j]; ret = max(ret, cur); } } return ret; } int main() { // freopen("input.in", "r", stdin); cin >> n >> m; for(int i = 0 ; i < n ;++i) cin >> a[i]; for (int i = 0; i < m; ++i) cin >> b[i]; memset(memo, -1, sizeof memo); cout << (solve((1 << m) - 1).first >= n ? "YES" : "NO") << "\n"; return 0; }

Compilation message (stderr)

bank.cpp: In function 'int main()':
bank.cpp:33:33: warning: 'void* memset(void*, int, size_t)' writing to an object of type 'struct std::pair<int, int>' with no trivial copy-assignment [-Wclass-memaccess]
   33 |     memset(memo, -1, sizeof memo);
      |                                 ^
In file included from /usr/include/c++/10/bits/stl_algobase.h:64,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bank.cpp:1:
/usr/include/c++/10/bits/stl_pair.h:211:12: note: 'struct std::pair<int, int>' declared here
  211 |     struct pair
      |            ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...