#include <bits/stdc++.h>
using namespace std;
#define ll int
#define pb push_back
#define fi first
#define se second
constexpr ll MAXN=2e6+5,MAXV=1e5,MOD=1e9+7;
ll n,m,i,j,p,k,ans,dem,st,en,a[MAXN],b[MAXN],giatri[MAXN],mark[MAXN];
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(i=1;i<=n;i++) cin>>a[i];
for(i=0;i<m;i++) cin>>b[i];
for(ll mask=1;mask<(1<<m);mask++){
ll cnt=0;
for(j=0;j<m;j++)
if((mask>>j)&1) cnt+=b[j];
giatri[mask]=cnt;
}
vector<ll> dung,luu;
dung.pb(0);
for(i=1;i<=n;i++){
luu.clear();
for(ll mask=1;mask<(1<<m);mask++) mark[mask]=0;
for(ll mask=1;mask<(1<<m);mask++){
if(giatri[mask]==a[i]&&!mark[mask]){
for(ll x:dung){
if((x|mask)==(x^mask)) luu.pb((x|mask));
mark[(x|mask)]=1;
}
}
}
dung=luu;
}
if(dung.size()) cout<<"YES";
else cout<<"NO";
}
# | 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... |