Submission #1215428

#TimeUsernameProblemLanguageResultExecution timeMemory
1215428bbldrizzyBank (IZhO14_bank)C++20
100 / 100
105 ms8632 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, m; cin >> n >> m;
    vector<int> vals(n);
    vector<int> notes(m);
    for (int &u: vals) cin >> u;
    for (int &u: notes) cin >> u;
    vector<int> extra(1<<m, -1);
    vector<int> covered(1<<m, -1);
    extra[0] = 0;
    covered[0] = 0;
    for (int i = 0; i < (1<<m); i++) {
        for (int j = 0; j < m; j++) {
            if ((i&(1<<j)) == 0) continue;
            int prev = i & ~(1<<j);
            if (covered[prev] == -1) continue;
            int amt = extra[prev] + notes[j];
            int nxt = vals[covered[prev]];
            if (amt < nxt) {
                extra[i] = amt;
                covered[i] = covered[prev];
            } else if (amt == nxt) {
                extra[i] = 0;
                covered[i] = covered[prev]+1;
            }
        }
        if (covered[i] == n) {
            cout << "YES"; return 0;
        }
    }
    cout << "NO";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...