fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<int> dp;
  5.  
  6. int f(int n, int k, int l) {
  7. if (n == 1 || n == k || n == l) return dp[n] = 1;
  8. if (dp[n] != -1) return dp[n];
  9.  
  10. int a = (n > 1) ? f(n - 1, k, l) : 1;
  11. int b = (n > k) ? f(n - k, k, l) : 1;
  12. int c = (n > l) ? f(n - l, k, l) : 1;
  13.  
  14. return dp[n] = !(a && b && c);
  15. }
  16.  
  17. int main() {
  18. ios::sync_with_stdio(false);
  19. cin.tie(NULL);
  20.  
  21. int k, l, m;
  22. if (!(cin >> k >> l >> m)) return 0; // Handle empty input
  23.  
  24. vector<int> v(m);
  25. for (int i = 0; i < m; i++) {
  26. if (!(cin >> v[i])) return 0; // Handle incomplete input
  27. }
  28.  
  29. int n = *max_element(v.begin(), v.end());
  30. dp.assign(n + 1, -1);
  31.  
  32. // Precompute dp values
  33. f(n, k, l);
  34.  
  35. for (int i = 0; i < m; i++) {
  36. cout << (dp[v[i]] ? 'a' : 'b');
  37. }
  38.  
  39. cout << '\n'; // Ensure proper output format
  40. return 0;
  41. }
  42.  
Success #stdin #stdout 0s 5276KB
stdin
Standard input is empty
stdout
Standard output is empty