Submission #1155383

#TimeUsernameProblemLanguageResultExecution timeMemory
1155383eudhsyfBank (IZhO14_bank)C++20
19 / 100
64 ms4624 KiB
#include <bits/stdc++.h>
using namespace std;
const int maxn = 20;
const int mod = 1e9 + 7;
int n, m, a[maxn + 5], b[maxn + 5], dp[(1 << 20) + 5];
signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    memset (dp, -1, sizeof(dp));
    cin >> n >> m;
    int smask = (1 << m) - 1;
    for (int i = 0; i < n; i++)
        cin >> a[i];
    for (int i = 0; i < m; i++)
        cin >> b[i];
    for (int i = 0; i < n; i++) {
        for (int mask = 1; mask < (1 << m); mask++) {
            int sum = 0;
            for (int j = 0; j < m; j++) {
                if (mask >> j & 1) {
                    sum += b[j];
                }
            }
            if (sum == a[i]) {
                int submask = smask ^ mask;
                for (int subset = submask; subset; subset = (subset - 1) & submask) {
                    if (dp[subset] == i - 1) {
                        dp[subset | mask] = i;
                        if (i == n - 1) {
                            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...