Submission #1343215

#TimeUsernameProblemLanguageResultExecution timeMemory
1343215mdamissuBank (IZhO14_bank)C++20
0 / 100
1 ms344 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    vector<int> a(n), b(m);
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 0; i < m; i++) cin >> b[i];

    vector<int> rem(1 << m, -1);
    vector<int> done(1 << m, -1);
    rem[0] = 0;
    done[0] = 0;

    for (int s = 0; s < (1 << m); s++) {
        if (done[s] == -1) continue;
        for (int i = 0; i < m; i++) {
            if ((s & (1 << i)) != 0) continue;
            int ns = s | (1 << i);
            int total = rem[s] + b[i];
            if (done[s] < n) {
                if (total < a[done[s]]) {
                    if (done[ns] < done[s]) {
                        done[ns] = done[s];
                        rem[ns] = total;
                    }
                } else if (total == a[done[s]]) {
                    if (done[ns] < done[s] + 1) {
                        done[ns] = done[s] + 1;
                        rem[ns] = 0;
                    }
                }
            }
        }
    }

    int full = (1 << m) - 1;
    if (done[full] == n) cout << "YES\n";
    else cout << "NO\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...