Submission #1215159

#TimeUsernameProblemLanguageResultExecution timeMemory
1215159sakuraBank (IZhO14_bank)C++20
71 / 100
1095 ms580 KiB
#include <iostream> #include <vector> #include <unordered_map> using namespace std; int N, M; vector<int> a, b; vector<vector<int>> salarySubsets; bool success = false; void dfs(int idx, int usedMask) { if (idx == N) { success = true; return; } for (int mask : salarySubsets[idx]) { if ((usedMask & mask) == 0) dfs(idx + 1, usedMask | mask); if (success) return; } } int main() { cin >> N >> M; a.resize(N); b.resize(M); for (int &x : a) cin >> x; for (int &x : b) cin >> x; salarySubsets.resize(N); for (int mask = 0; mask < (1 << M); ++mask) { int sum = 0; for (int j = 0; j < M; ++j) if (mask & (1 << j)) sum += b[j]; for (int i = 0; i < N; ++i) if (sum == a[i]) salarySubsets[i].push_back(mask); } dfs(0, 0); cout << (success ? "YES" : "NO") << endl; 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...