Submission #1268226

#TimeUsernameProblemLanguageResultExecution timeMemory
1268226puc_playerBank (IZhO14_bank)C++20
46 / 100
78 ms8516 KiB
#include <bits/stdc++.h> using namespace std; int N, M; vector<int> salary; vector<int> banknotes; vector<pair<int, int>> dp; vector<vector<int>> candidates; void func() { dp.assign(1 << M, {-1, -1}); dp[0] = {0, 0}; for (int mask = 1; mask < (1 << M); mask++) { for (int i = 0; i < M; i++) { if (!(mask & (1 << i))) continue; auto [lastIdx, lastSum] = dp[mask ^ (1 << i)]; lastSum += banknotes[i]; if (lastSum < salary[lastIdx]) { dp[mask] = {lastIdx, lastSum}; } else if (lastSum == salary[lastIdx]) { dp[mask] = {lastIdx + 1, 0}; } } if (dp[mask].first == N) { cout << "YES\n"; return; } } cout << "NO\n"; } int main() { cin >> N >> M; salary.resize(N); banknotes.resize(M); for (int i = 0; i < N; ++i) cin >> salary[i]; for (int i = 0; i < M; ++i) cin >> banknotes[i]; func(); 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...