Submission #1134427

#TimeUsernameProblemLanguageResultExecution timeMemory
1134427MuhammetBank (IZhO14_bank)C++17
100 / 100
234 ms92520 KiB
#include "bits/stdc++.h" using namespace std; int n, m, dp[21][(1<<20)+1]; vector <int> a, b, v[1005]; bool f(int x, int mask){ if(x == n+1) return true; if(~dp[x][mask]) return dp[x][mask]; for(auto i : v[a[x]]){ if((mask&i) != 0) continue; if(f(x+1,mask^i)) return dp[x][mask] = true; } return dp[x][mask] = false; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> m; a.resize(n+1), b.resize(m+1); int mx = 0; for(int i = 1; i <= n; i++){ cin >> a[i]; mx = max(mx, a[i]); } for(int i = 1; i <= m; i++){ cin >> b[i]; } memset(dp, -1, sizeof dp); for(int i = 0; i < (1<<m); i++){ int x = 0; for(int j = 0; j < m; j++){ if((i>>j) & 1) x += b[j+1]; } if(x > mx) continue; v[x].push_back(i); } cout << (!f(1,0) ? "NO\n" : "YES\n"); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...