Submission #1178346

#TimeUsernameProblemLanguageResultExecution timeMemory
1178346nt_nhanBank (IZhO14_bank)C++20
52 / 100
1094 ms27332 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define el '\n' int const maxn = 1e3 + 3; int a[21], b[21], n, m; bool dp[1 << 20][21]; unordered_map<int, vector<int>> mp; int32_t main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for (int i = 1; i <= n; ++i) { cin >> a[i]; } for (int i = 1; i <= m; ++i) { cin >> b[i]; } for (int mask = 0; mask < (1 << m); ++mask) { int sum = 0; for (int i = 0; i < m; ++i) { if ((mask >> i) & 1) { sum += b[i + 1]; } } mp[sum].push_back(mask); } dp[0][0] = true; mp[0].push_back(0); for (int i = 1; i <= n; ++i) { for (int mask = 0; mask < (1 << m); ++mask) { for (int s : mp[a[i]]) { if (dp[mask][i - 1]) { if (s & mask) continue; dp[mask | s][i]= true; } } } } bool ans = false; for (int mask = 0; mask < (1 << m); ++mask) { ans = ans || dp[mask][n]; } cout << (ans ? "YES" : "NO"); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...