#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
int main()
{
// ifstream cin("input.txt");
// ofstream cout("output.txt");
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, m; cin >> n >> m;
vector<ll> a(n), b(m);
for (int i = 0; i < n; i++) cin >> a[i];
sort(a.begin(), a.end());
for (int i = 0; i < m; i++) cin >> b[i];
sort(b.begin(), b.end());
vector<pair<ll, ll>> dp(1 << m, {0, 0});
for (int mask = 1; mask < (1 << m); mask++) {
for (int bit = 0; bit < m; bit++) if (mask & (1 << bit)) {
pair<ll, ll> cur = dp[mask ^ (1 << bit)];
if (cur.first == n){
dp[mask] = cur;
continue;
}
cur.second += b[bit];
if (cur.second == a[cur.first]) {
cur.first++;
cur.second = 0;
}
dp[mask] = max(dp[mask], cur);
}
}
cout << (dp[(1 << m) - 1].first == n ? "YES" : "NO") << '\n';
}
# | 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... |