#include <bits/stdc++.h>
using namespace std;
#define ss second
#define ff first
int n,m,a[25],b[25];
pair <int,int> dp[(1<<21)];
int main(){
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>b[i];
}
for(int j=0;j<m;j++){
cin>>a[j];
}
b[n]=INT_MAX;
for(int j=0;j<(1<<m);j++){
for(int i=0;i<m;i++){
if(j&(1<<i)){
if(dp[j^(1<<i)].ss+a[i]==b[dp[j^(1<<i)].ff]){
dp[j]=max(dp[j],make_pair(dp[j^(1<<i)].ff+1,0));
}else{
dp[j]=max(dp[j],make_pair(dp[j^(1<<i)].ff,dp[j^(1<<i)].ss+a[i]));
}
}
}
}
for(int j=0;j<(1<<m);j++){
if(dp[j].ff>n-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... |