Submission #1125092

#TimeUsernameProblemLanguageResultExecution timeMemory
1125092PanndaWeird Numeral System (CCO21_day1problem2)C++20
0 / 25
1421 ms1114112 KiB
#include <bits/stdc++.h> using namespace std; int K, Q, D, M; int digits[5001]; constexpr int IMPOSSIBLE = 6785; map<long long, int> par; bool backtrack(long long n) { if (par.count(n)) return par[n] != IMPOSSIBLE; for (int i = 0; i < D; i++) { if ((n - digits[i]) % K == 0 && backtrack((n - digits[i]) / K)) { par[n] = digits[i]; return true; } } par[n] = IMPOSSIBLE; return false; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> K >> Q >> D >> M; for (int i = 0; i < D; i++) { cin >> digits[i]; par[digits[i]] = digits[i]; } while (Q--) { long long N; cin >> N; if (!backtrack(N)) { cout << "IMPOSSIBLE\n"; } else { vector<int> ans; do { int d = par[N]; ans.push_back(d); N = (N - d) / K; } while (N != 0); for (int i = ans.size() - 1; i >= 0; i--) { cout << ans[i] << " \n"[i == 0]; } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...