Submission #1286178

#TimeUsernameProblemLanguageResultExecution timeMemory
1286178OmarAlimammadzadeBank (IZhO14_bank)C++20
19 / 100
86 ms16828 KiB
#include "bits/stdc++.h" using namespace std; #ifdef LOCAL #include "algo/debug" #else #define dbg(...) #endif #define int long long void run() { int n, m; cin >> n >> m; int a[n + 1], b[m + 1]; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 1; i <= m; i++) { cin >> b[i]; } int sum[1 << m]; fill(sum, sum + (1 << m), 0); for (int msk = 0; msk < 1 << m; msk++) { for (int i = 0; i < m; i++) { sum[msk] += (msk >> i & 1) * b[i + 1]; } } int pref[n + 1]; pref[0] = 0; for (int i = 1; i <= n; i++) { pref[i] = pref[i - 1] + a[i]; } int dp[1 << m]; fill(dp, dp + (1 << m), 0); for (int msk = 0; msk < 1 << m; msk++) { for (int i = 0; i < m; i++) { if (msk >> i & 1) { continue; } int nw_msk = 1 << i | msk; if (sum[msk] - pref[dp[msk]] + b[i + 1] == a[dp[msk] + 1]) { dp[nw_msk] = max(dp[nw_msk], dp[msk] + 1); } } } for (int msk = 0; msk < 1 << m; msk++) { if (dp[msk] == n) { cout << "YES\n"; return; } } cout << "NO\n"; } signed main() { ios::sync_with_stdio(0); cin.tie(nullptr); int tt = 1; // cin >> tt; while (tt--) { run(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...