Submission #1312001

#TimeUsernameProblemLanguageResultExecution timeMemory
1312001nikoloz-chBank (IZhO14_bank)C++20
0 / 100
1 ms332 KiB
#include <bits/stdc++.h>
#define int int64_t
using namespace std;
int n, m;
vector<vector<int>> pub;
vector<int> a, b;
bool rec(int cnt, int cur){
    if(cur == n) return true;
    for(auto &i : pub[cur]){
        if((cnt & i) == 0){
            if(rec(cnt | i, cur + 1)) return true;
        }
    }
    return false;
}

void solve(){
    cin >> n >> m; pub.assign(n, vector<int>());
    for(auto &i : a) cin >> i;
    for(auto &i : b) cin >> i;
    for(int i = 0; i < (1LL << m); i++){
        int sum = 0;
        for(int j = 0; j < m; j++){
            if(i & (1LL << j)){
                sum += b[j];
            }
        }
        for(int j = 0; j < n; j++){
            if(sum == a[j]){
                pub[j].push_back(i);
            }
        }
    }
    if(rec(0, 0)){
        cout << "YES\n";
    } else {
        cout << "NO\n";
    }
}
signed main(){
    cin.tie(0)->sync_with_stdio(0);
    int _ = 1;// cin >> _; cout.tie(0);
    while(_--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...