Submission #871270

#TimeUsernameProblemLanguageResultExecution timeMemory
871270anarch_yBank (IZhO14_bank)C++17
25 / 100
1092 ms2140 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define all(x) begin(x), end(x) #define pb push_back int main(){ int n, m; cin >> n >> m; vector<int> a(n), b(m); for(int i=0; i<n; i++) cin >> a[i]; int tot = 0; for(int i=0; i<m; i++){ cin >> b[i]; tot += b[i]; } vector<int> arr[tot+1]; for(int s=0; s<(1<<m); s++){ int t = 0; for(int p=0; p<m; p++){ if(s&(1<<p)) t+=b[p]; } arr[t].pb(s); } vector<vector<int>> dp((1<<m), vector<int>(n+1, 0)); for(int s=0; s<(1<<m); s++){ dp[s][0] = 1; } for(int i=1; i<=n; i++){ int t = a[i-1]; for(int s=0; s<(1<<m); s++){ for(auto u: arr[t]){ if((s&u)==u){ dp[s][i] |= dp[s^u][i-1]; } } } } if(dp[(1<<m)-1][n]) cout << "YES"; else 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...