#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main(){
ll n, m; cin>>n>>m;
vector<ll> a(n);
vector<ll> b(m);
vector<vector<ll>> dp(1<<m, vector<ll>(n));
for(ll i = 0; i < n; i++) cin>>a[i];
for(ll i = 0; i < m; i++) cin>>b[i];
vector<vector<ll>> c(1001);
for(ll i = 0; i < (1<<m); i++){
ll sum = 0;
for(ll j = 0; j < m; j++){
if(i&(1<<j)){
sum += b[j];
}
if(sum <= 1000) c[sum].push_back(i);
}
}
for(auto i : c[a[0]]){
dp[i][0] = 1;
}
for(ll i = 0; i < (1<<m); i++){
for(ll j = 0; j < n-1; j++){
if(dp[i][j] == 0) continue;
for(ll k : c[a[j+1]]){
if(i & k) continue;
dp[i | k][j+1] = 1;
}
}
if(dp[i][n-1] == 1){
cout<<"YES"<<endl;
return 0;
}
}
cout<<"NO"<<endl;
}
# | 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... |