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...