제출 #1277852

#제출 시각아이디문제언어결과실행 시간메모리
1277852alahunovahmad은행 (IZhO14_bank)C++20
100 / 100
373 ms182884 KiB
#include<bits/stdc++.h> #define int long long using namespace std; signed main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n, m; cin >> n >> m; 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<vector<int>> sum(1001); for (int p = 0; p < (1<<m); p++) { int s = 0; for (int i = 0; i < m; i++) { if ((p>>i)&1) s += b[i]; } if (s <= 1000) sum[s].push_back(p); } vector<vector<int>> dp(n, vector<int>(1<<m, 0)); for (int mask : sum[a[0]]) dp[0][mask] = 1; for (int i = 1; i < n; i++) { for (int p = 0; p < (1 << m); p++) { if (dp[i - 1][p] == 0) continue; for (int q : sum[a[i]]) { if (!(p & q)) { dp[i][p | q] = 1; } } } } if (count(dp[n - 1].begin(), dp[n - 1].end(), 1) == 0) cout << "NO\n"; else cout << "YES\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...