#include <bits/stdc++.h>
#define F first
#define S second 
using namespace std;
int n, m;
long long salary[21], bank[21];
bool dfs(int k, int mask, long long c){
    if (k>=n) return 1;
    bool b=0;
    for (int i=0; i<m; i++) {
        if (!(mask & (1<<i))){
            if (c+bank[i]<salary[k]) b=max(b, dfs(k, mask+(1<<i), c+bank[i]));
            else if (c+bank[i]==salary[k]) b=max(b, dfs(k+1, mask+(1<<i), 0));
        }
    }
    return b;
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    long long c;
    cin>>n>>m;
    for (int i=0; i<n; i++) cin>>salary[i];
    for (int i=0; i<m; i++) cin>>bank[i];
    bool b=dfs(0, 0, 0);
    if (b) cout<<"YES";
    else cout<<"NO";
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |