#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define all(x) x.begin(),x.end()
#define ld long double
using namespace std;
int main()
{
ll n,m;cin>>n>>m;
ll a[n+5],b[m+5];
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=m;i++){
cin>>b[i];
}
sort(b+1,b+m+1);
if(n==1){
for(int mask=1;mask<(1<<m);mask++){
ll sum=0;
for(int j=0;j<m;j++){
if(mask&(1<<j)){
sum+=b[j+1];
}
}
if(sum==a[1]){
cout<<"YES"<<endl;return 0;
}
}
cout<<"NO"<<endl;
return 0;
}
do{
ll ind=1;
ll a1[n+5];
for(int i=1;i<=n;i++) a1[i]=a[i];
for(int i=1;i<=m;i++){
if(a1[ind]>=b[i]){
a1[ind]-=b[i];
if(a1[ind]==0) ind++;
}
else{
break;
}
}
if(ind==n+1){
cout<<"YES"<<endl;return 0;
}
}while(next_permutation(b+1,b+m+1));
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... |