#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
int m;
cin >> m;
vector<int> a(n);
for(int i=0;i<n;i++)cin >> a[i];
vector<int> b(m);
for(int i=0;i<m;i++)cin >> b[i];
int bt=1<<m;
vector<int> dp(bt,-1);
vector<int> lft(bt,-1);
dp[0]=0;
lft[0]=0;
for(int i=1;i<bt;i++){
for(int j=0;j<m;j++){
if(((1<<j)&i)>0){
if(dp[i^(1<<j)]!=-1){
if(lft[i^(1<<j)]+b[j]<a[dp[i^(1<<j)]]){
dp[i]=dp[i^(1<<j)];
lft[i]=lft[i^(1<<j)]+b[j];
}
else if(lft[i^(1<<j)]+b[j]==a[dp[i^(1<<j)]]){
dp[i]=dp[i^(1<<j)]+1;
lft[i]=0;
break;
}
}
}
}
if(dp[i]==n){
cout << "YES\n";
return 0;
}
}
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... |