Submission #1289356

#TimeUsernameProblemLanguageResultExecution timeMemory
1289356kubinsgk8Bank (IZhO14_bank)C++20
52 / 100
1096 ms9616 KiB
#include<bits/stdc++.h>
using namespace std;

long long n, m;

long long a[22], b[22];

bool  dp[22][(1<<20)+2];

long long sum[(1<<20)+2];

int main()
{

    ios_base::sync_with_stdio(0);cin.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];

    for(int mask=0; mask<(1<<m); mask++)
    {
        for(int i=0; i<m; i++)
        {
            if(mask&(1<<(i)))sum[mask]+=b[i+1];
        }

        dp[0][mask]=true;
    }


    for(int i=1; i<=n; i++)
    {

        for(int mask=1; mask<(1<<m); mask++)
        {
            for(int con=mask; con; con=(con-1)&mask)
            {
                if(sum[con]!=a[i])continue;

                if(dp[i-1][mask^con])
                {
                    dp[i][mask]=true;
                    break;
                }
            }
        }
    }


    for(int mask=1; mask<(1<<m); mask++)
    {
        if(dp[n][mask])
        {
            cout<<"YES";
            return 0;
        }
    }

    cout<<"NO";

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...