// source problem :
#include <bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
#define lb lower_bound
#define ub upper_bound
#define MASK(i) (1LL << (i))
void ckmax(int& f, int s)
{
f = (f > s ? f : s);
}
void ckmin(int& f, int s)
{
f = (f < s ? f : s);
}
int a[20], suma = 0, b[20], sumb = 0, n, m;
void solve(int p)
{
if (suma == 0)
{
cout << "YES";
exit(0);
}
if (suma > sumb) return;
if (p == m) return;
sumb -= b[p];
solve(p + 1);
sumb += b[p];
for (int i = 0; i < n; i++)
{
if (a[i] && a[i] < b[p]) return;
if (a[i] >= b[p])
{
a[i] -= b[p];
suma -= b[p];
sumb -= b[p];
solve(p + 1);
a[i] += b[p];
suma += b[p];
sumb += b[p];
}
}
}
int32_t main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n >> m;
for (int i = 0; i < n; i++) cin >> a[i], suma += a[i];
for (int i = 0; i < m; i++) cin >> b[i], sumb += b[i];
sort(b, b + m);
solve(0);
cout << "NO";
return 0;
}
# | 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... |