Submission #1308558

#TimeUsernameProblemLanguageResultExecution timeMemory
1308558AgageldiBank (IZhO14_bank)C++20
100 / 100
298 ms187372 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define N 500005 int tc = 1, n, a[N], m, b[N], dp[21][(1<<20)], sm[(1<<20)]; vector <int> E[N]; int F(int pos,int mask) { if(pos == n) return 1; if(~dp[pos][mask]) return dp[pos][mask]; int var = 0; for(auto i : E[a[pos]]) { if((mask & i)) continue; if(F(pos + 1,mask | i)) return dp[pos][mask] = 1; } return dp[pos][mask] = 0; } int32_t main() { ios::sync_with_stdio(0);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 sum = 0; for(int j = 0; j < m; j++) { if((i >> j) & 1) sum += b[j]; } E[sum].push_back(i); } memset(dp, -1, sizeof dp); cout <<(F(0,0) == 1? "YES\n" : "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...