Submission #1273228

#TimeUsernameProblemLanguageResultExecution timeMemory
1273228eduardmm은행 (IZhO14_bank)C++20
100 / 100
91 ms25044 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

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<pair<ll, ll>> s(1 << m);
    vector<ll> check(1 << m);

    check[0] = 1;
    bool ok = false;
    for (int i = 0; i < (1 << m) - 1; ++i){

        if (check[i] == 0) continue;
        for (int j = 0; j < m; ++j){
            if (i & (1 << j)) continue;

            int k = s[i].first, val = s[i].second;
            val += b[j];

            if (a[k] == val){
                check[i | (1 << j)] |= 1;
                s[i | (1 << j)] = {k + 1, 0};
            }
            else if (a[k] > val){
                check[i | (1 << j)] |= 1;
                s[i | (1 << j)] = {k, val};
            }
        }
    }

    for (int i = 0; i < (1 << m); ++i){
        if (s[i].first == n)
            ok = true;
    }

    if (ok) cout << "YES\n";
    else cout << "NO\n";

    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...