Submission #1240107

#TimeUsernameProblemLanguageResultExecution timeMemory
1240107MasterDebaterBank (IZhO14_bank)C++20
71 / 100
139 ms13672 KiB
#include<bits/stdc++.h> using namespace std; const int p=(1<<20),N=20; int n,m,a[N],b[N],dp[N][p]; vector<int>v[1001]; bool solve(int i,int bm){ if(i==n)return 1; if(bm==0)return 0; bool res=0; for(int j=0;j<v[a[i]].size();j++){ int br=v[a[i]][j]; if((bm&br)==br and !dp[i+1][bm^br]){ dp[i+1][bm^br]=1; res|=solve(i+1,bm^br); } } return res; } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin>>n>>m; for(int i=0;i<n;i++)cin>>a[i]; for(int i=0;i<m;i++)cin>>b[i]; for(int i=0;i<(1<<m);i++){ int res=0; for(int j=0;j<m;j++)if((i>>j)&1)res+=b[j]; //if(res==8)cout<<i<<'\n'; v[res].push_back(i); } if(solve(0,(1<<m)-1))cout<<"YES\n"; else cout<<"NO\n"; 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...