Submission #1273225

#TimeUsernameProblemLanguageResultExecution timeMemory
1273225eduardmmBank (IZhO14_bank)C++20
25 / 100
2 ms580 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main(){

    int n, m;
    cin >> n >> m;

    vector<int> a(n), b(m);
    for (int i = 0; i < n; ++i)
        cin >> a[i];
    for (int i = 0; i < m; ++i)
        cin >> b[i];
    
    
    vector<pair<ll, ll>> s(1 << m);
    vector<ll> check(1 << m);

    check[0] = 1;

    bool ok = false;
    for (int i = 0; i < (1 << m) - 1; ++i){

        if (check[i] == 0) continue;
        if (s[i].first == n){
            ok = true;
            break;
        }

        for (int j = 0; j < m; ++j){
            if (i & (1 << j)) continue;

            int k = s[i].first, val = s[i].second;
            val += b[j];

            if (a[k] == val){
                check[i | (1 << j)] |= 1;
                s[i | (1 << j)] = {k + 1, 0};
            }
            else if (a[k] > val){
                check[i | (1 << j)] |= 1;
                s[i | (1 << j)] = {k, val};
            }
        }
    }

    if (ok || check[(1 << m) - 1]) cout << "YES\n";
    else 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...