Submission #1171856

#TimeUsernameProblemLanguageResultExecution timeMemory
1171856nt_nhanBank (IZhO14_bank)C++20
52 / 100
1096 ms13588 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define el '\n' int n, m, a[21], b[21]; bool dp[21][1 << 21]; int sum[1 << 21]; map<int, vector<int>> pre; #pragma GCC optimize("unroll-loops,O3") 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 j = 1; j <= m; ++j) { cin >> b[j]; } for (int mask = 0; mask < (1 << m); ++mask) { int sum = 0; for (int j = 0; j < m; ++j) { if ((mask >> j) & 1) sum += b[j + 1]; } pre[sum].push_back(mask); dp[0][mask] = true; } pre[0].push_back(0); bool ans = false; for (int i = 1; i <= n; ++i) { for (int mask = 0; mask < (1 << m); ++mask) { if (dp[i - 1][mask]) { for (int p : pre[a[i]]) { if (p & mask) continue; dp[i][mask | p] = 1; } } } } for (int mask = 0; mask < (1 << m); ++mask) ans |= dp[n][mask]; 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...