#include "bits/stdc++.h"
using namespace std;
int n, m, dp[21][(1<<20)+1];
vector <int> a, b, v[1005];
bool f(int x, int mask){
if(x == n+1) return true;
if(~dp[x][mask]) return dp[x][mask];
for(auto i : v[a[x]]){
if((mask&i) != 0) continue;
if(f(x+1,mask^i)) return dp[x][mask] = true;
}
return dp[x][mask] = false;
}
int main(){
ios::sync_with_stdio(false); cin.tie(nullptr);
cin >> n >> m;
a.resize(n+1), b.resize(m+1);
int mx = 0;
for(int i = 1; i <= n; i++){
cin >> a[i];
mx = max(mx, a[i]);
}
for(int i = 1; i <= m; i++){
cin >> b[i];
}
memset(dp, -1, sizeof dp);
for(int i = 0; i < (1<<m); i++){
int x = 0;
for(int j = 0; j < m; j++){
if((i>>j) & 1) x += b[j+1];
}
if(x > mx) continue;
v[x].push_back(i);
}
cout << (!f(1,0) ? "NO\n" : "YES\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... |