#include<bits/stdc++.h>
using namespace std;
const int MAXN=1048576;
int A[22],B[22],sum[MAXN],D[MAXN],S[22];
bool ck[MAXN];
int getlog(long long n) { return 63-__builtin_clzll(n); }
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,m,s=0;
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>A[i];
S[i]=A[i];
if(i) S[i]+=S[i-1];
}
S[n]=1e9;
for(int i=0;i<m;i++) cin>>B[i];
for(int i=1;i<(1<<m);i++)
{
sum[i]=sum[i-(1<<getlog(i))]+B[getlog(i)];
for(int j=0;j<n;j++) D[i]+=(sum[i]<S[j+1])+(sum[i]>=S[j]);
}
ck[0]=true;
for(int i=0;i<(1<<m);i++) for(int j=0;j<m;j++) if(!(i&(1<<j))&&D[i|(1<<j)]-D[i]<=1) ck[i|(1<<j)]|=ck[i];
for(int i=0;i<(1<<m);i++) if(ck[i]&&D[i]==n*2) return cout<<"YES",0;
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... |