Submission #1178254

#TimeUsernameProblemLanguageResultExecution timeMemory
1178254GoBananas69Bank (IZhO14_bank)C++20
71 / 100
1095 ms8004 KiB
#include <algorithm> #include <iostream> #include <vector> using namespace std; typedef long long ll; int n, m; void solve(int curr, int i, vector<int> &a, vector<vector<int>> &sums) { if (i == n) { cout << "YES\n"; exit(0); } for (int &j: sums[a[i]]) { if (j & curr) continue; solve(j | curr, i + 1, a, sums); } } int main() { cin.tie(0)->sync_with_stdio(0); cin >> n >> m; vector<int> a(n), b(m); int mx = 0; for (int &i : a) cin >> i; for (int &i : b) { cin >> i; mx += i; } vector<vector<int>> sums(mx + 1); int t = 1 << m; for (int i = 0; i < t; ++i) { int curr = 0; for (int j = 0; j < m; ++j) { if (i & (1 << j)) curr += b[j]; } if (curr > mx) continue; sums[curr].push_back(i); } for (int &i : a) { if (i > mx) { cout << "NO\n"; exit(0); } if (sums[i].empty()) { cout << "NO\n"; exit(0); } } solve(0, 0, a, sums); cout << "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...