#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int int_fast32_t
#define ul uint_fast32_t
#define ll int_fast64_t
#define dll long double
#define ull uint_fast64_t
#define spektar this_thread::sleep_for(chrono::milliseconds(50))
void solve(){
int n,m;
cin >> n >> m;
vector<pair<set<int>,int>> dp(1001);
vector<int> k(n);
for(auto& i:k) cin >> i;
vector<int> k1(m);
for(auto& i:k1) cin >> i;
sort(k1.begin(),k1.end());
dp[0].second=1;
for(int i=1; i<=1000; i++){
for(int j=0; j<m; j++){
if(i<k1[j]) break;
if(dp[i-k1[j]].first.find(j)!=dp[i-k1[j]].first.end()) continue;
dp[i].second=dp[i-k1[j]].second;
if(dp[i].second){
dp[i].first=dp[i-k1[j]].first;
dp[i].first.insert(j);
break;
}
}
}
for(int i=0; i<n; i++){
if(!dp[k[i]].second){
cout << "NO" << endl;
return;
}
}
cout << "YES" << endl;
}
signed main(){
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t=1;
//cin >> t;
while(t--){
solve();
}
}
| # | 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... |