#include <bits/stdc++.h>
using namespace std;
bitset<21> c[(1<<20)]; int p[21],a[21];
int main(){
int n,m,s,l; cin >>n>>m; p[0]=0;
for(int i=1;i<=n;++i) cin>>p[i],p[i]+=p[i-1];
for(int i=0;i<m;++i) cin>>a[i],c[1<<i][0]=1;
for(int i=1;i<(1<<m);++i){
s=0; l=0;
for(int j=0;j<m;++j) if(i&(1<<j)) s+=a[j];
for(int j=1;j<=n;++j) if(s==p[j]) l=j;
if(s==p[l] && c[i][l-1]) c[i][l]=1;
for(int j=0;j<m;++j)
if(!(i&(1<<j)))
for(int k=0;k<=n;++k)
c[i^(1<<j)][k]=c[i^(1<<j)][k]|c[i][k];
}if(c[(1<<m)-1][n]) 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... |