#include <iostream>
using namespace std;
const int N = 21;
int A[N], B[N], Mx[1<<N], Sum[1<<N], pre[N];
int main(){
int n, m;
cin>>n>>m;
for (int i=0;i<n;i++)
cin>>A[i], pre[i] = (i == 0 ? 0 : pre[i-1]) + A[i];
for (int j=0;j<m;j++)
cin>>B[j];
for (int i=1;i<(1<<m);i++){
int b = 31 - __builtin_clz(i & -i);
Sum[i] = Sum[i - (1<<b)] + B[b];
for (int j=0;j<m;j++){
if ((1<<j) & i){
int ind = Mx[i - (1<<j)];
Mx[i] = max(Mx[i], ind + (A[ind] == Sum[i] - (ind == 0 ? 0 : pre[ind - 1])));
}
}
}
cout<<(Mx[(1<<m) - 1] == n ? "YES\n" : "NO\n");
}
# | 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... |