제출 #1228626

#제출 시각아이디문제언어결과실행 시간메모리
1228626chithanhnguyen은행 (IZhO14_bank)C++20
100 / 100
98 ms8644 KiB
#include <bits/stdc++.h> using namespace std; #define BIT(x, i) ((x >> i) & 1) int n, m, a[20], b[20], dp1[1 << 20], dp2[1 << 20]; signed main() { ios_base::sync_with_stdio(0); cin.tie(nullptr); cout.tie(nullptr); cin >> n >> m; for (int i = 0; i < n; ++i) cin >> a[i]; for (int i = 0; i < m; ++i) cin >> b[i]; memset(dp1, -1, sizeof dp1); memset(dp2, -1, sizeof dp2); dp1[0] = 0; dp2[0] = 0; for (int mask = 0; mask < (1 << m); ++mask) { for (int i = 0; i < m; ++i) { if (!BIT(mask, i)) continue; int prevmask = mask & ~(1 << i); if (dp2[prevmask] == -1) continue; int t = dp1[prevmask] + b[i]; int target = a[dp2[prevmask]]; if (t < target) { dp2[mask] = dp2[prevmask]; dp1[mask] = t; } else if (t == target) { dp2[mask] = dp2[prevmask] + 1; dp1[mask] = 0; } } if (dp2[mask] == n) { cout << "YES"; return 0; } } cout << "NO"; 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...