#include<bits/stdc++.h>
using namespace std;
int notes[25];
int ppl[25];
int mx[(1<<21)+5];
int lft[(1<<21)+5];
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int n,m;cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>ppl[i];
}
for(int i=0;i<m;i++){
cin>>notes[i];
}
for(int i=0;i<(1<<(m));i++){
//cerr<<"i:"<<i<<"\n";
for(int j=0;j<m;j++){
if(((i>>j)&1)==0)continue;
int prv=(i^(1<<j));
//cerr<<prv<<" ";
int val=mx[prv]+1;
if(val>n){
mx[i]=mx[prv];
lft[i]=lft[prv];
continue;
}
int have=lft[prv]+notes[j];
if(have==ppl[val]){
if(val>mx[i]){
mx[i]=val;
lft[i]=0;
}
}else{
if(val-1>=mx[i]){
mx[i]=val-1;
lft[i]=have;
}
}
}
//cerr<<"\n";
//cerr<<i<<" "<<mx[i]<<" "<<lft[i]<<"\n";
}
//cerr<<(1<<(m)-1)<<"\n";
if(mx[(1<<m)-1]==n){
cout<<"YES\n";
}else{
cout<<"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... |