Submission #1313539

#TimeUsernameProblemLanguageResultExecution timeMemory
1313539shirokitoBank (IZhO14_bank)C++20
100 / 100
538 ms4524 KiB
#include <bits/stdc++.h> using namespace std; #define ForUp(i, a, b) for (int i = (a), _b = (b); i <= _b; i++) #define ForDn(i, a, b) for (int i = (a), _b = (b); i >= _b; i--) #define all(a) (a).begin(), (a).end() #define BIT(mask, i) (((mask) >> (i)) & 1) using ll = long long; const int N = 20; const int INF = 1e9; int n, m, a[N], b[N]; int dp[1 << N]; void solve() { cin >> n >> m; ForUp (i, 0, n - 1) { cin >> a[i]; } ForUp (i, 0, m - 1) { cin >> b[i]; } ForUp (mask, 0, (1 << m) - 1) { dp[mask] = -INF; } dp[0] = 0; int sum = 0; ForUp (i, 0, n - 1) { sum += a[i]; ForUp (mask, 0, (1 << m) - 1) { if (dp[mask] == -INF) continue; ForUp (j, 0, m - 1) if (!BIT(mask, j)) { dp[mask | (1 << j)] = dp[mask] + b[j]; } } ForUp (mask, 0, (1 << m) - 1) { if (dp[mask] != sum) dp[mask] = -INF; } } ForUp (mask, 0, (1 << m) - 1) { if (dp[mask] != -INF) { cout << "YES" << '\n'; return; } } cout << "NO" << '\n'; } signed main() { cin.tie(0) -> sync_with_stdio(0); int T = 1; // cin >> T; while (T--) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...