fork download
  1.  
  2. #include "cliclib.h"
  3.  
  4. using namespace std;
  5.  
  6. bool f[30001][16][11];
  7. int pow3[11];
  8.  
  9. int main() {
  10. int n = inicjuj();
  11.  
  12. int cnt1 = 0;
  13. while (1 << cnt1 <= n) cnt1 ++;
  14. int cnt2 = 0, now = 1;
  15. while (now <= n) {
  16. pow3[cnt2 ++] = now;
  17. now *= 3;
  18. }
  19. pow3[cnt2] = now;
  20.  
  21. for (int i = n; i >= 0; i --)
  22. for (int j = cnt1; j >= 0; j --)
  23. for (int k = cnt2; k >= 0; k --) {
  24. f[i][j][k] = false;
  25. if (i + (1 << j) * pow3[k] >= n) continue;
  26. if (j < cnt1 && ! f[i][j + 1][k]) f[i][j][k] = true;
  27. if (k < cnt2 && ! f[i][j][k + 1]) f[i][j][k] = true;
  28. if (! f[i + (1 << j) * pow3[k]][0][0]) f[i][j][k] = true;
  29. }
  30.  
  31. int a = 0, b = 0, c = 0;
  32. while (true) {
  33. if (b < cnt1 && ! f[a][b + 1][c]) {
  34. alojzy(2);
  35. b ++;
  36. } else if (c < cnt2 && ! f[a][b][c + 1]) {
  37. alojzy(3);
  38. c ++;
  39. } else {
  40. alojzy(1);
  41. a += (1 << b) * pow3[c];
  42. b = c = 0;
  43. }
  44. int x = bajtazar();
  45. if (x == 1) {
  46. a += (1 << b) * pow3[c];
  47. b = c = 0;
  48. }
  49. if (x == 2) b ++;
  50. if (x == 3) c ++;
  51. }
  52.  
  53. return 0;
  54. }
  55.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty