Submission #1176976

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