Submission #1169047

#TimeUsernameProblemLanguageResultExecution timeMemory
1169047GoBananas69Bank (IZhO14_bank)C++20
25 / 100
1 ms840 KiB
#include <iostream> #include <vector> #include <algorithm> #include <map> #include <bitset> typedef long long ll; using namespace std; bool ok = false; ll n, m; void solve(ll curr, ll k, vector<ll> &a, vector<vector<ll>> &mask) { if (k == n) { cout << "YES\n"; exit(0); } for (auto &i: mask[a[k]]) { if (!(curr & i)) { solve(curr | i, k + 1, a, mask); } } } signed main() { cin.tie() -> sync_with_stdio(0); cin >> n >> m; vector<ll> a(n), b(m); if (n > m) { cout << "NO\n"; return 0; } ll sum = 0; for (ll i = 0; i<n; ++i) cin >> a[i]; for (ll i = 0; i<m; ++i) { cin >> b[i]; sum += b[i]; } vector<vector<ll>> mask(sum + 1); for (ll i = 1; i<=(1 << m); ++i) { ll curr = 0; for (ll j = 0; j<m; ++j) { if (i & (1 << j)) curr += b[j]; } mask[curr].push_back(i); } if (n == 1) { if (mask[a[0]].empty()) { cout << "NO\n"; return 0; } cout << "YES\n"; return 0; } for (ll i = 0; i<n; ++i) { if (mask[a[i]].empty()) { cout << "NO\n"; return 0; } } solve(0, 0, a, mask); cout << "NO\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...