#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
int n,m;
int a[21],b[20];
int dp[1<<20];
int main(){
ios_base::sync_with_stdio(false);cin.tie(NULL);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
a[i]+=a[i-1];
}
for(int i=0;i<m;i++)
cin>>b[i];
for(int i=0;i<(1<<m);i++){
if(dp[i]==n){
cout<<"YES"<<endl;
return 0;
}
int sum=0;
for(int j=0;j<m;j++)
if((1<<j)&i)
sum+=b[j];
for(int j=0;j<m;j++){
if(i&(1<<j))continue;
if(a[dp[i]+1]==sum+b[j])dp[i|(1<<j)]=dp[i]+1;
else dp[i|(1<<j)]=max(dp[i|(1<<j)],dp[i]);
}
}
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... |