#include <bits/stdc++.h>
using namespace std;
#define FOR(i, l, r) for(int i = (l); i < (r); i++)
int arr1[20], arr2[20];
pair<int, int> dp[1 << 20];
int main()
{
cin.tie(0)->sync_with_stdio(0);
int n, m;
cin >> n >> m;
FOR(i, 0, n) cin >> arr1[i];
FOR(i, 0, m) cin >> arr2[i];
fill(dp, dp + (1 << m), make_pair(-1, -1));
dp[0] = {0, 0};
FOR(i, 0, 1 << m)
{
if(dp[i].first == -1) continue;
if(dp[i].first == n) return cout << "YES\n", 0;
FOR(j, 0, m)
{
if(i & (1 << j)) continue;
int k = dp[i].second + arr2[j];
if(k == arr1[dp[i].first]) dp[i | (1 << j)] = {dp[i].first + 1, 0};
else if(k < arr1[dp[i].first]) dp[i | (1 << j)] = {dp[i].first, k};
}
}
cout << "NO\n";
return 0;
}
| # | 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... |