Submission #1306663

#TimeUsernameProblemLanguageResultExecution timeMemory
13066631anBank (IZhO14_bank)C++20
100 / 100
91 ms8624 KiB
#include <bits/stdc++.h> using namespace std; int main () { int n, m; cin >> n >> m; vector<int> works(n), ps(n), notes(m); for (int i = 0; i < n; i++) { cin >> works[i]; ps[i] = works[i]; if (i != 0) ps[i] += works[i - 1]; } for (int i = 0; i < m; i++) cin >> notes[i]; vector<pair<int, int>> dp(1 << m, {-1, -1}); dp[0] = {0, 0}; for (int mask = 0; mask < (1 << m); mask++) { if (dp[mask].first == -1) continue; if (dp[mask].first == n) { printf("YES\n"); return 0; } for (int i = 0; i < m; i++) { if (mask & (1 << i)) continue; int payment = dp[mask].second + notes[i]; if (payment == works[dp[mask].first]) { dp[mask | (1 << i)] = max(dp[mask | (1 << i)], {dp[mask].first + 1, 0}); } else if (payment < works[dp[mask].first]) { dp[mask | (1 << i)] = max(dp[mask | (1 << i)], {dp[mask].first, payment}); } } } printf("NO\n"); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...