#include <bits/stdc++.h>
using namespace std;
int n, k;
int qs[21], qstgt[21];
bool vis[1<<20];
int main() {
cin >> n >> k;
for(int i=1;i<=n;i++) {cin >> qstgt[i]; qstgt[i] += qstgt[i-1];}
for(int i=1;i<=k;i++) {cin >> qs[i];}
vis[0] = 1;
for(int cst=0;cst<(1<<k);cst++) {
if(!vis[cst]) continue;
//cout << cst << '\n';
int idx = 0, sum = 0;
for(int i=0;i<k;i++) if((cst>>i)&1) sum += qs[i+1];
for(idx=0;idx<=n && qstgt[idx] <= sum;idx++); idx--;
if(idx == n) {cout << "YES"; return 0;}
for(int i=0;i<k;i++) {
if(cst & (1 << i)) continue;
if(sum + qs[i+1] > qstgt[idx+1]) continue;
vis[cst | (1 << i)] = 1;
}
}
cout << "NO";
}
# | 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... |