Submission #1228975

#TimeUsernameProblemLanguageResultExecution timeMemory
1228975dhuyyyyBank (IZhO14_bank)C++20
100 / 100
102 ms16844 KiB
#include <bits/stdc++.h> #define fi first #define se second #define int long long using namespace std; using ll = long long; using ii = pair<ll, ll>; using pii = pair<int,ii>; using aa = array<int,3>; const int N = 21; const int M = 1e6+5; const int INF = 1e9; const int MOD = 1e9+7; int n,m,a[N],b[N],num[(1 << N)],pre[(1 << N)]; ii dp[(1 << N)]; signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= m; i++) cin >> b[i]; for (int i = 0; i < (1 << m); i++) pre[i] = -1; pre[0] = num[0] = 0; for (int i = 0; i < (1 << m); i++){ for (int j = 0; j < m; j++){ if (!(i & (1 << j))) continue; int before = (i & ~(1 << j)); if (pre[before] == -1) continue; int cur = b[j+1] + num[before]; if (cur < a[pre[before]+1]){ pre[i] = pre[before]; num[i] = cur; } else if (cur == a[pre[before] + 1]){ pre[i] = pre[before] + 1; } } if (pre[i] == n) return cout << "YES",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...