Submission #1277371

#TimeUsernameProblemLanguageResultExecution timeMemory
1277371hlk28khuongBank (IZhO14_bank)C++20
52 / 100
1096 ms6960 KiB
#include <bits/stdc++.h> using namespace std; const int mxn=1e2+7; int a[mxn],b[mxn]; bool dp[22][(1LL << 20) + 2]; vector<int>state[20002]; int main() { int n,m; 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=1;mask<(1<<m);mask++) { int musk = mask; int sum = 0; while(musk > 0){ int i = __builtin_ctz(musk & -musk); sum += b[i + 1]; musk -= (1LL<<i); } state[sum].push_back(mask); } dp[0][0]=1; for(int i=1;i<=n;i++) { for(int mask=0;mask<(1<<m);mask++) { for(auto musk:state[a[i]]) { if((musk&mask)==0) { dp[i][mask|musk]|=dp[i-1][mask]; } } } } for(int mask=0;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...