Submission #1278029

#TimeUsernameProblemLanguageResultExecution timeMemory
1278029desmond1015Bank (IZhO14_bank)C++20
100 / 100
101 ms8620 KiB
#include "bits/stdc++.h" using namespace std; #define ll long long const int MOD = 1e9+7; const int INF = 1e9; const int N = 20; array<int, 2> dp[1 << N]; // {no. paid people, leftover} void solve() { int n, m; cin >> n >> m; vector<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]; } dp[0] = {0, 0}; for (int mk = 1; mk < (1 << m); mk++) { dp[mk] = {0, -1}; for (int i = 0; i < m; i++) { if (((mk >> i) & 1) == 0) continue; int prev = mk ^ (1 << i); if (dp[prev][1] == -1) continue; auto [ppl, rem] = dp[prev]; int cur = rem + b[i]; if (cur < a[ppl]) { dp[mk] = {ppl, cur}; } else if (cur == a[ppl]) { dp[mk] = {ppl + 1, 0}; } } if (dp[mk][0] == n) { cout << "YES\n"; return; } } cout << "NO\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); // freopen("input.txt", "r", stdin); // freopen("output.txt", "w", stdout); // freopen("input.in", "r", stdin); // freopen("output.out", "w", stdout); // int T = 1; // cin >> T; // while (T--) { solve(); // } 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...