Submission #1235941

#TimeUsernameProblemLanguageResultExecution timeMemory
1235941lanaskaricaBank (IZhO14_bank)C++20
100 / 100
358 ms54876 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pii pair <int, int> #define fi first #define se second const int MAXN = 25, POT = (1 << 20) + 5; bool bl; int n, arr[MAXN], br[MAXN], dp[MAXN][POT]; vector <int> v[MAXN]; void rek(int idx, int mask) { if (idx == n) {bl = 1; return;} if (mask == 0) return; for (auto e : v[idx]) { if ((mask & e) != e || dp[idx][(mask ^ e)] == 1) continue; dp[idx][(mask ^ e)] = 1; rek(idx + 1, (mask ^ e)); } } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int m; cin >> n >> m; for (int i = 0; i < n; i++) cin >> arr[i]; for (int i = 0; i < m; i++) cin >> br[i]; for (int mask = 0; mask < (1 << m); mask++) { int zb = 0; for (int j = 0; j < m; j++) { if (mask & (1 << j)) zb += br[j]; } for (int j = 0; j < n; j++) { if (zb == arr[j]) v[j].push_back(mask); } } bl = 0; rek(0, (1 << m) - 1); if (bl == 1) cout << "YES\n"; else cout << "NO\n"; 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...