#include <bits/stdc++.h>
// Author: Kazuki_Will_Win_VOI_8703
#define fi first
#define se second
#define pii pair<int, int>
#define ll long long
#define all(a) a.begin(), a.end()
using namespace std;
const int mn = 1e6 + 5, bm = (1 << 20) + 1;
const int inf = 1e9;
int n, a[mn], m, b[mn], sum[mn], dp[mn], ok[mn];
vector <int> Megumi[mn];
void backtrack(int i, int mask){
if(i == n + 1){
cout << "YES\n";
exit(0);
}
for(auto sub : Megumi[a[i]]){
if((mask & sub) == 0){
backtrack(i + 1, mask | sub);
}
}
}
void solve(){
cin >> n >> m;
for(int i = 1; i <= n; i++) cin >> a[i];
for(int i = 1; i <= m; i++) cin >> b[i];
for(int mask = 0; mask < (1 << m); mask++){
for(int i = 0; i < m; i++){
if(mask & (1 << i)) sum[mask] += b[i + 1];
}
if(sum[mask] <= 1000) Megumi[sum[mask]].push_back(mask);
}
backtrack(1, 0);
cout << "NO\n";
}
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
// cin >> t;
while(t--) solve();
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... |