#include "bits/stdc++.h"
using namespace std;
#define ll long long int
#define SZ(s) (int)s.size()
#define ff first
#define ss second
const int N = 2e4 + 5;
int n, m;
vector <int> a, b, p;
unordered_map <int,bool> mp, mp1;
int main(){
ios::sync_with_stdio(false); cin.tie(0);
cin >> n >> m;
a.resize(n+1), b.resize(m+1), p.resize(n+1, 0);
for(int i = 1; i <= n; i++){
cin >> a[i];
p[i] = p[i-1] + a[i];
}
for(int i = 1; i <= m; i++){
cin >> b[i];
}
vector <vector <int>> dp(n+1, vector <int> (N+1,0));
for(int i = 0; i < N; i++){
dp[0][i] = true;
}
for(int i = 0; i < (1<<m); i++){
int x = 0;
for(int j = 0; j < m; j++){
if((i>>j) & 1) x += b[j+1];
}
for(int j = 1; j <= n; j++){
if(x == p[j] and dp[j-1][x] == true) dp[j][x] = true;
}
}
for(int i = 0; i < N; i++){
if(dp[n][i] == true){
cout << "YES";
return 0;
}
}
cout << "NO";
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... |