Submission #660160

#TimeUsernameProblemLanguageResultExecution timeMemory
660160AlmaBank (IZhO14_bank)C++17
100 / 100
121 ms8576 KiB
#include <bits/stdc++.h> using namespace std; int N, M; int a[20], b[20], pre[20]; int idx[(1 << 20)], dp[(1 << 20)]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); memset(pre, 0, sizeof pre); memset(dp, -1, sizeof dp); memset(idx, -1, sizeof idx); dp[0] = idx[0] = 0; cin >> N >> M; for (int i = 0; i < N; i++) { cin >> a[i]; if (i == 0) pre[i] = a[i]; else pre[i] = a[i] + pre[i-1]; } for (int i = 0; i < M; i++) { cin >> b[i]; } for (int mask = 1; mask < (1 << M); mask++) { for (int i = 0; i < M; i++) { if (!(mask & (1 << i))) continue; int x = mask - (1 << i); if (dp[x] == -1 or idx[x] == -1) continue; if (dp[x] == pre[idx[x]]) { dp[mask] = dp[x] + b[i]; idx[mask] = idx[x] + 1; } if (dp[x] + b[i] <= pre[idx[x]]) { dp[mask] = dp[x] + b[i]; idx[mask] = idx[x]; } } } for (int mask = 0; mask < (1 << M); mask++) { if (dp[mask] == pre[N-1] and idx[mask] == N-1) { cout << "YES\n"; return 0; } } 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...