#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int n, m; cin >> n >> m;
vector<int> a(n); for (auto &x: a) cin >> x;
vector<int> b(m); for (auto &x: b) cin >> x;
map<pair<int, vector<int>>, bool> memo;
function<bool(int, vector<int>)> solve = [&](int n, vector<int> s) -> bool {
if (n == -1) return true;
if (memo.count({n, s})) return memo[{n, s}];
int len = s.size();
int elem = a[n];
bool ans = false;
for (int i = 0; i < pow(2, len); i++) {
vector<int> subset;
int sum = 0;
for (int j = 0; j < len; j++)
if ((i >> j) % 2 == 0) subset.push_back(s[j]);
else sum += s[j];
if (sum == elem) ans = ans | solve(n - 1, subset);
}
return memo[{n, s}] = ans;
};
if (solve(n - 1, b)) cout << "YES";
else cout << "NO";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |