Submission #1226219

#TimeUsernameProblemLanguageResultExecution timeMemory
1226219chuchucharlesBank (IZhO14_bank)C++20
100 / 100
128 ms5544 KiB
#include <bits/stdc++.h> using namespace std; int n, m, a[25], b[25], sum[1 << 20]; bool dp[1 << 20]; signed main () { cin >> n >> m; for (int i = 0; i < n; i++) { cin >> a[i]; if (i) a[i] += a[i - 1]; } for (int i = 0; i < m; i++) cin >> b[i]; for (int mask = 0; mask < (1 << m); mask++) { for (int j = 0; j < m; j++) if (mask >> j & 1) sum[mask] += b[j]; } dp[0] = 1; for (int mask = 0; mask < (1 << m); mask++) if (dp[mask]) { int re = *upper_bound(a, a + n, sum[mask]) - sum[mask]; for (int j = 0; j < m; j++) if ((mask >> j & 1) == 0 && b[j] <= re) dp[mask | (1 << j)] = 1; } for (int mask = 0; mask < (1 << m); mask++) if (dp[mask] && sum[mask] == a[n - 1]) { cout << "YES"; return 0; } cout << "NO"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...