/**
* Author : Vu Khac Minh
**/
#include <bits/stdc++.h>
#define ll long long
#define BIT(x,i) (((x)>>(i))&(1))
#define MASK(x) ((1ll)<<(x))
using namespace std;
const int maxn = 1e5 + 5;
const int mod = 1e9+7;
int n,m,a[maxn],b[maxn],dp[21][MASK(20)],sum[maxn];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n>>m;
for(int i =1;i<=n;i++) cin>>a[i];
for(int i = 1;i<=m;i++) cin>>b[i];
dp[0][0] = 1;
for(int mask = 0;mask<MASK(m);mask++)
{
for(int i =1;i<=m;i++)
if(BIT(mask,i-1)) sum[mask] +=b[i];
}
for(int i =0;i<n;i++)
{
for(int mask = 0;mask<MASK(m);mask++)
if(dp[i][mask]!=0)
{
for(int prev = 0;prev<MASK(m);prev++)
if((mask & prev) == 0 && sum[prev] == a[i+1])
{
dp[i+1][mask|prev] = 1;
}
}
}
for(int mask = 0;mask<MASK(m);mask++)
if(dp[n][mask])
{
cout<<"YES";
return 0;
}
cout<<"NO";
return 0;
}
# | 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... |