Submission #1261544

#TimeUsernameProblemLanguageResultExecution timeMemory
1261544sohamsen15Bank (IZhO14_bank)C++20
71 / 100
1093 ms788 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int n, m; cin >> n >> m;
    vector<int> a(n); for (auto &x: a) cin >> x;
    vector<int> b(m); for (auto &x: b) cin >> x;
    map<pair<int, vector<int>>, bool> memo;

    function<bool(int, vector<int>)> solve = [&](int n, vector<int> s) -> bool {
        if (n == -1) return true;
        if (memo.count({n, s})) return memo[{n, s}];
        int len = s.size();
        int elem = a[n];
        bool ans = false;
        for (int i = 0; i < pow(2, len); i++) {
            vector<int> subset;
            int sum = 0;
            for (int j = 0; j < len; j++) 
                if ((i >> j) % 2 == 0) subset.push_back(s[j]);
                else sum += s[j];
            if (sum == elem) ans = ans | solve(n - 1, subset);
        }
        return memo[{n, s}] = ans;
    };

    if (solve(n - 1, b)) cout << "YES";
    else cout << "NO";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...