제출 #1306778

#제출 시각아이디문제언어결과실행 시간메모리
1306778alosza은행 (IZhO14_bank)C++20
100 / 100
95 ms8640 KiB
#include <bits/stdc++.h> using namespace std; #define FOR(i, l, r) for(int i = (l); i < (r); i++) int arr1[20], arr2[20]; pair<int, int> dp[1 << 20]; int main() { cin.tie(0)->sync_with_stdio(0); int n, m; cin >> n >> m; FOR(i, 0, n) cin >> arr1[i]; FOR(i, 0, m) cin >> arr2[i]; fill(dp, dp + (1 << m), make_pair(-1, -1)); dp[0] = {0, 0}; FOR(i, 0, 1 << m) { if(dp[i].first == -1) continue; if(dp[i].first == n) return cout << "YES\n", 0; FOR(j, 0, m) { if(i & (1 << j)) continue; int k = dp[i].second + arr2[j]; if(k == arr1[dp[i].first]) dp[i | (1 << j)] = {dp[i].first + 1, 0}; else if(k < arr1[dp[i].first]) dp[i | (1 << j)] = {dp[i].first, k}; } } 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...