Submission #1273439

#TimeUsernameProblemLanguageResultExecution timeMemory
1273439jakovgBank (IZhO14_bank)C++20
25 / 100
44 ms87088 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 20; int n, m; int a[maxn], b[maxn]; int dp[21][1 << 20]; vector<int> s[1000]; int rec(int at, int mask) { if (at >= n) return 1; if (dp[at][mask] != -1) return dp[at][mask]; int rez = 0; for (int i : s[a[at]]) { if ((i & mask) == 0) { rez = max(rez, rec(at + 1, mask | i)); } } return dp[at][mask] = rez; } int main() { ios::sync_with_stdio(false); memset(dp, -1, sizeof dp); cin >> n >> m; 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 < (1 << m); i++) { int sum = 0; for (int j = 0; j < m; j++) { if (i & (1 << j)) sum += b[j]; } if (sum <= 1000) s[sum].push_back(i); } if (rec(0, 0) == 1) { cout << "YES\n"; } else { 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...