#include <bits/stdc++.h>
#define NMAX 20
#define LOG 19
#define ll long long int
#define BASE 128
#define MOD 20232029
using namespace std;
ifstream fin("cod.in");
ofstream fout("cod.out");
int a[NMAX+1],b[NMAX+1];
bool dp[2][1<<NMAX];
bool can[1<<NMAX];
int n,m;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
cin >> n >> m;
for(int i=1;i<=n;i++)
{
cin >> a[i];
}
for(int i=0;i<m;i++)
{
cin >> b[i];
}
dp[0][0]=1;
for(int i=1;i<=n;i++)
{
vector<int> v;
for(int mask=1;mask < (1<<m);mask++)
{
int s=0;
for(int j=0;j<m;j++)
{
if(mask & (1<<j))
{
s += b[j];
}
}
can[mask] = (s==a[i]);
}
int curr = i%2;
dp[curr][0] = 0;
for(int mask=1;mask < (1<<m);mask++)
{
dp[curr][mask]=0;
for(int submask=mask;submask!=0 && !dp[curr][mask];submask=(submask-1)&mask)
{
dp[curr][mask] |= dp[!curr][mask ^ submask] && can[submask];
}
}
}
bool ok=0;
for(int mask=1;mask<(1<<m);mask++)
{
if(dp[n%2][mask])
{
ok=1;
}
}
cout << (ok ? "YES" : "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... |