Submission #1176970

#TimeUsernameProblemLanguageResultExecution timeMemory
1176970GoBananas69은행 (IZhO14_bank)C++20
25 / 100
2 ms840 KiB
#include <algorithm> #include <deque> #include <iomanip> #include <iostream> #include <map> #include <string> #include <vector> using namespace std; typedef long long ll; int n, m; void solve(int mask, int curr, vector<vector<int>> &sums, vector<int> &a) { if (curr == n) { cout << "YES\n"; exit(0); } for (int &i: sums[a[curr]]) { if (mask & i) continue; solve(mask | i, curr + 1, sums, a); } } signed main() { cin.tie(0)->sync_with_stdio(0); cin >> n >> m; vector<int> a(n), b(m); int mx = 0; if (n > m) { cout << "NO\n"; return 0; } for (int &i: a) cin >> i; for (int &i: b) { cin >> i; mx += i; } vector<vector<int>> sums(mx + 1); for (int i = 0; i<(1 << m); ++i) { int curr = 0; for (int j = 0; j<m; ++j) { if ((1 << j) & i) curr += b[j]; } sums[curr].push_back(i); } for (int i = 0; i<n; ++i) { if (sums[a[i]].empty()) { cout << "NO\n"; return 0; } } solve(0, 0, sums, a); 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...