#include<bits/stdc++.h>
using namespace std;
#define mod 1000000007
#define nmax 1050007
#define fi first
#define se second
#define ll long long
ll t=1,n,m,i,j,d=0,x=0,k=0,y,z,a[27],b[27],f[nmax],h[nmax],cnt=0;
vector<ll>v[27],v1,v2;
int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(i=1;i<=n;++i)
    {
        cin>>a[i];
    }
    for(i=1;i<=m;++i)
    {
        cin>>b[i];
    }
    if(n>m)
    {
        cout<<"NO";
        return 0;
    }
    z=(1<<m);
    for(i=0;i<z;++i)
    {
        for(j=0;j<m;++j)
            if((i&(1<<j)))
        {
            f[i]=f[(i^(1<<j))]+b[j+1];
            break;
        }
    }
    for(i=1;i<=n;++i)
    {
        for(j=1;j<z;++j)
        {
            if(f[j]==a[i])v[i].push_back(j);
        }
    }
    v1.push_back(0);
    for(i=1;i<=n;++i)
    {
        cnt++;
        for(int j:v1)
        {
            for(int k:v[i])
            {
                x=(j^k);
                if((j&k)==0&&h[x]!=cnt)
                {
                    h[x]=cnt;
                    v2.push_back(x);
                }
            }
        }
        v1=v2;
        v2.clear();
    }
    if(v1.size()>0)cout<<"YES";
    else 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... |