#include <bits/stdc++.h>
using namespace std;
int n,m;
int a[20];
int b[20];
bool c[20][1 << 20];
vector<int> v[20001];
int M;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin >> n >> m;
M = 1 << m;
for(int i = 0;i < n;i++) cin >> a[i];
for(int j = 0;j < m;j++) cin >> b[j];
for(int mask = 0;mask < M;mask++){
int sum = 0;
for(int i = 0;i < m;i++) if((mask >> i)&1) sum += b[i];
v[sum].push_back(mask);
}
for(int i = 0;i < n;i++){
for(int elm : v[a[i]]){
if(!i){
for(int preMask = 0;preMask < M;preMask++){
if((preMask & elm) == elm){
c[i][preMask] = true;
}
}
}else{
for(int preMask = 0;preMask < M;preMask++){
if((preMask & elm) == elm){
c[i][preMask] |= c[i - 1][preMask ^ elm];
}
}
}
}
}
for(int mask = 0;mask < M;mask++){
if(c[n - 1][mask]){
cout << "YES";
return 0;
}
}
cout << "NO";
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... |