#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m; cin >> n >> m;
vector<int> vals(n);
vector<int> notes(m);
for (int &u: vals) cin >> u;
for (int &u: notes) cin >> u;
vector<int> extra(1<<m, -1);
vector<int> covered(1<<m, -1);
extra[0] = 0;
covered[0] = 0;
for (int i = 0; i < (1<<m); i++) {
for (int j = 1; j < m; j++) {
if ((i&(1<<j)) == 0) continue;
int prev = i & ~(1<<j);
if (covered[prev] == -1) continue;
int amt = extra[prev] + notes[j];
int nxt = vals[covered[prev]];
if (amt < nxt) {
extra[i] = nxt;
covered[i] = covered[prev];
} else if (amt == nxt) {
extra[i] = 0;
covered[i] = covered[prev]+1;
}
}
if (covered[i] == n) {
cout << "YES"; exit(0);
}
}
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... |