#include <bits/stdc++.h>
using namespace std;
const int MAXN = 20;
int a[MAXN + 1] , b[MAXN + 1] , c[MAXN + 1] , n , m , ans;
void bkt( int pos ) {
int i;
if( pos == m + 1 ) {
i = 1;
//cout << c[1] << '\n';
while( i <= n && c[i] == a[i] )
i++;
if( i == n + 1 )
ans = 1;
return;
}
//cout << c[0] << ' ' << c[1] << ' ' << pos << ' ' << ans << ' ' << m << '\n';
if( ans == 1 )
return;
for( i = 0 ; i <= n ; i++ )
if( c[i] < a[i] ) {
c[i] += b[pos];
bkt( pos + 1 );
c[i] -= b[pos];
}
}
int main() {
int i;
cin >> n >> m;
for( i = 1 ; i <= n ; i++ )
cin >> a[i];
a[0] = INT_MAX;
for( i = 1 ; i <= m ; i++ )
cin >> b[i];
if( n > m )
cout << "NO\n";
else {
bkt( 1 );
if( ans )
cout << "YES\n";
else
cout << "NO\n";
}
return 0;
}
| # | 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... |