#include <bits/stdc++.h>
using namespace std;
const int N=20;
int n,m,a[N+1],b[N+1];
pair <int,int> dp[(1<<N)+1];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m;
for(int i=0;i<n;i++) cin >> a[i];
for(int i=0;i<m;i++) cin >> b[i];
dp[0]={0,0};
for(int mask=0;mask<(1<<m);mask++){
if(dp[mask].first==n){
cout << "YES\n";
exit(0);
}
for(int i=0;i<m;i++){
if(mask&(1<<i)) continue;
pair <int,int> nxt;
if(a[dp[mask].first]==dp[mask].second+b[i]) nxt={dp[mask].first+1,0};
else nxt={dp[mask].first,dp[mask].second+b[i]};
dp[mask|(1<<i)]=max(dp[mask|(1<<i)],nxt);
}
}
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... |