#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <bitset>
typedef long long ll;
using namespace std;
bool solve(vector<int> a, vector<int> b) {
    int n = a.size(), m = b.size();
    int curr = 0;
    int j = 0;
    for (int i = 0; i<n; ++i) {
        curr = 0;
        while (curr < a[i] && j < m) {
            curr += b[j];
            ++j;
        }
        if (curr != a[i]) {
            return false;
        }
    }
    return true;
}
signed main() {
    cin.tie() -> sync_with_stdio(0);
    int n, m;
    cin >> n >> m;
    vector<int> a(n), b(m);
    if (n > m) {
        cout << "NO\n";
        return 0;
    }
    for (int i = 0; i<n; ++i) cin >> a[i];
    for (int i = 0; i<m; ++i) cin >> b[i];
    sort(b.begin(), b.end());
    if (solve(a, b)) {
        cout << "YES\n";
        return 0;
    }
    while (next_permutation(b.begin(), b.end())) {
        if (solve(a, b)) {
            cout << "YES\n";
            return 0;
        }
    }
    cout << "NO\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... |