#include <bits/stdc++.h>
using namespace std;
#define sped ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define pb push_back
#define s second
#define f first
const int N = 5e5 + 10;
void okok(){
int n,m;
cin >> n >> m;
if(n > 1){
int a[n + 1];
vector < int > v;
for(int i = 1;i <= n;i++) cin >> a[i];
for(int i = 1;i <= m;i++){
int x;
cin >> x;
v.pb(x);
}
sort(v.begin(),v.end());
do{
int c = 0;
int j = 1;
for(int to : v){
if(j > n) break;
c += to;
if(c > a[j]){
break;
}
if(c == a[j]){
j++;
c = 0;
}
}
if(j > n){
cout << "YES";
return;
}
}
while(next_permutation(v.begin(),v.end()));
cout << "NO";
return;
}
int x;
cin >> x;
int b[m + 1];
for(int i = 0;i < m;i++){
cin >> b[i];
}
for(int i = 1 ;i < (1<<m);i++){
int sum = 0;
for(int j = 0;j < m;j++){
if( ((1 << j) & i) != 0){
sum += b[j];
}
}
if(sum == x){
cout << "YES";
return;
}
}
cout << "NO";
}
signed main() {
//freopen("bank.in", "r", stdin) ;
//freopen("bank.out", "w", stdout);
sped
int tt = 1;
//cin >> tt;
while(tt--){
okok();
cout << '\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... |