Submission #1261275

#TimeUsernameProblemLanguageResultExecution timeMemory
1261275medaaBank (IZhO14_bank)C++20
100 / 100
354 ms86780 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define endl '\n' void SOLVE() { int n, m; cin >> n >> m; vector<int> a(n), b(m); int S = 0; for(auto & val : a) cin >> val, S += val; for(auto & val : b) cin >> val; vector<vector<int>> can(n); for(int i = 1; i < (1 << m); i++){ int sum = 0; for(int j = 0; j < m; j++){ if((i >> j) & 1) sum += b[j]; } for(int j = 0; j < n; j++){ if(a[j] == sum){ can[j].push_back(i); } } } vector<vector<int>> dp(n, vector<int>(1 << m, -1)); function<int(int, int)> solve =[&] (int i, int mask){ if(i == n) return 1; int &ret = dp[i][mask]; if(~ret) return ret; ret = 0; for(int m : can[i]){ if((m & mask) == 0) ret |= solve(i + 1, mask | m); } return ret; }; cout << (solve(0, 0) ? "YES" : "NO") << endl; } signed main(){ ios_base::sync_with_stdio(false); cout.tie(nullptr); cin.tie(nullptr); //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); int o_o = 1; //cin >> o_o; while(o_o --) SOLVE(); 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...