Submission #1203256

#TimeUsernameProblemLanguageResultExecution timeMemory
1203256dungttBank (IZhO14_bank)C++20
71 / 100
1095 ms516 KiB
#include <bits/stdc++.h> using namespace std; int N, M, a[21], b[21]; vector<int> ok_masks[21]; bool backtrack(int idx, int used_mask) { if (idx == N) return true; for (int mask : ok_masks[idx]) { if ((mask & used_mask) == 0) { if (backtrack(idx + 1, used_mask | mask)) return true; } } return false; } int main() { cin >> N >> M; for (int i = 0; i < N; ++i) cin >> a[i]; for (int j = 0; j < M; ++j) cin >> b[j]; // Chuẩn bị các tập con hợp lệ cho từng người for (int i = 0; i < N; ++i) { ok_masks[i].clear(); 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]; if (sum == a[i]) ok_masks[i].push_back(mask); } } // Thử mọi cách ghép tập con cho N người if (backtrack(0, 0)) cout << "YES\n"; else cout << "NO\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...