#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> a, b;
vector<int> used;
bool ok = false;
void dfs(int i) {
if (i == n) { // phát đủ cho n người
ok = true;
return;
}
int need = a[i];
function<void(int,int)> tryGive = [&](int pos, int sum) {
if (ok) return;
if (sum > need) return;
if (sum == need) {
dfs(i+1);
return;
}
for (int j = pos; j < m; j++) if (!used[j]) {
used[j] = 1;
tryGive(j+1, sum + b[j]);
used[j] = 0;
}
};
tryGive(0, 0);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> m;
a.resize(n);
b.resize(m);
for (int &x : a) cin >> x;
for (int &x : b) cin >> x;
used.assign(m, 0);
dfs(0);
cout << (ok ? "YES\n" : "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... |