/**
* author: a.k
* created: idk
**/
#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
#define int long long
#define nl '\n'
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m; cin >> n >> m;
vector<int> a(n), b(m);
for(auto &u : a) cin >> u;
for(auto &u : b) cin >> u;
vector<int> rem(1 << m, -1), cnt(1 << m, -1);
rem[0] = 0;
cnt[0] = 0;
for(int mask = 0; mask < 1 << m; mask++) {
for(int last = 0; last < m; last++) {
if(!(mask >> last & 1)) continue;
int prev = mask & ~(1 << last);
if(cnt[prev] == -1) continue;
int cur = rem[prev] + b[last];
int targ = a[cnt[prev]];
if(cur < targ) {
cnt[mask] = cnt[prev];
rem[mask] = cur;
}
if(cur == targ) {
cnt[mask] = cnt[prev] + 1;
rem[mask] = 0;
}
}
if(cnt[mask] == n) {
cout << "YES" << nl;
return 0;
}
}
cout << "NO" << nl;
}
# | 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... |