Submission #1321475

#TimeUsernameProblemLanguageResultExecution timeMemory
1321475zhaoxwBank (IZhO14_bank)C++20
25 / 100
12 ms10964 KiB
#include<bits/stdc++.h> using namespace std; int dp[1<<20][21],a[21],b[21],mp[1005],n,m,cnt = 1; vector<int> subset[1005]; int main() { cin >> n >> m; for(int i = 1;i <= n;i++) { cin >> a[i]; if(!mp[a[i]]) mp[a[i]] = cnt++; } for(int i = 1;i <= m;i++) cin >> b[i]; for(int mask = 0;mask < (1<<m);mask++) { int cur = 0; dp[mask][0] = 1; for(int j = 0;j < m;j++) if(mask&(1<<j)) cur += b[j+1]; if(mp[cur]) subset[cur].push_back(mask); } for(int i = 1;i <= n;i++) for(int mask = 0;mask < (1<<m);mask++) for(auto x:subset[a[i]]) if((x&mask) == x) dp[mask][i] |= dp[mask^x][i-1]; if(dp[(1<<m)-1][n]) 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...