#include <bits/stdc++.h>
#define int long long
using namespace std;
const int sz = 25;
int n, m;
int a[sz], b[sz];
vector<bool> used(sz, false);
signed main(){
cin >> n >> m;
unordered_map<int, int> mp;
int x = 0;
int ans = 0;
for(int i = 0; i < n; i++){
cin >> a[i];
mp[a[i]]++;
}for(int i = 0; i < m; i++){
cin >> b[i];
}for(int mask = 0; mask < (1 << m); mask++){
int s = 0, y = 0;
for(int i = 0; i < m; i++){
if(mask&(1<<i)){
s += b[i];
y |= (1<<i);
}
}bool ok=false;
int num;
for(int i = 0; i < n; i++){
if(s == a[i] && mp[a[i]]){
num = a[i];
ok=true;
break;
}
}if(ok){
bool flag = true;
for(int i = 0; i < m; i++){
if(y&(1<<i) && used[i]){
flag=false;
break;
}
}if(flag){
for(int i = 0; i < m; i++){
if(y&(1<<i)){
used[i] = true;
}
}
mp[num]--;
ans++;
}
}
}if(ans == n){
cout << "YES\n";
}else {
cout << "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... |