Submission #1279590

#TimeUsernameProblemLanguageResultExecution timeMemory
1279590hanguyendanghuyBank (IZhO14_bank)C++20
100 / 100
332 ms10112 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll int
#define pb push_back
#define fi first
#define se second
constexpr ll MAXN=2e6+5,MAXV=1e5,MOD=1e9+7;
ll n,m,i,j,p,k,ans,dem,st,en,a[MAXN],b[MAXN],giatri[MAXN],mark[MAXN];
vector<ll> cnt[1005];
bool dp[2][MAXN];
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m;
    for(i=1;i<=n;i++) cin>>a[i];
    for(i=0;i<m;i++) cin>>b[i];
    for(ll mask=1;mask<(1<<m);mask++){
        ll dem=0;
        for(j=0;j<m;j++)
            if((mask>>j)&1) dem+=b[j];
        cnt[dem].pb(mask);
    }
    dp[1][0]=true;
    for(i=1;i<=n;i++){
        for(ll mask=0;mask<(1<<m);mask++){
            dp[(i&1)^1][mask]=false;
        }
        for(ll mask=0;mask<(1<<m);mask++){
            if(!dp[i&1][mask]) continue;
            for(ll x:cnt[a[i]])
                if((x|mask)==(x^mask)) dp[(i&1)^1][(x|mask)]=true;
        }
    }
    for(ll mask=1;mask<(1<<m);mask++){
        if(dp[(n-1)&1][mask]){
            cout<<"YES";
            return 0;
        }
    }
    cout<<"NO";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...