fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void KhoitaoCH (int arr[], int n, int idx)
  5. {
  6. arr[idx - 2] = 0;
  7. for(int i=idx; i<=n; i+=2)
  8. {
  9. arr[i] = i;
  10. }
  11. }
  12.  
  13. void InCH (int arr[], int n)
  14. {
  15. for(int i=2; i<=n; i++)
  16. {
  17. cout << arr[i] - 2 << "\t";
  18. }
  19. cout << endl;
  20.  
  21. }
  22.  
  23. int Timsoi (int arr[], int n)
  24. {
  25. for (int i=n; i>0; i-=2)
  26. {
  27. if(4 == i || 3 == i )
  28. {
  29. return 0;
  30. }
  31. if(arr[i] > arr[i-2])
  32. {
  33. return i;
  34. }
  35. }
  36. }
  37.  
  38. void Hoanvi (int &a, int &b)
  39. {
  40. int tg = a;
  41. a = b;
  42. b = tg;
  43. }
  44.  
  45. void Xeptang (int arr[], int n, int vt)
  46. {
  47. for(int i=vt; i<n; i+=2)
  48. {
  49. for(int j=i+2; j<=n; j+=2)
  50. {
  51. if(arr[i] > arr[j])
  52. {
  53. Hoanvi(arr[i], arr[j]);
  54. }
  55. }
  56. }
  57. }
  58.  
  59. void Sinhhoanvi (int arr[], int n)
  60. {
  61. int i;
  62. do
  63. {
  64. i = Timsoi(arr,n);
  65. for(int j=n; j>=i; j-=2)
  66. {
  67. if(arr[j] > arr[i-2])
  68. {
  69. Hoanvi(arr[j], arr[i-2]);
  70. Xeptang(arr, n, i);
  71. InCH(arr,n);
  72. }
  73. }
  74. }
  75. while(i>0);
  76. }
  77.  
  78. int main()
  79. {
  80. int k;
  81. cin >> k;
  82. int n = 2*k+1;
  83. int arr[n];
  84. KhoitaoCH(arr,n,2);
  85. KhoitaoCH(arr,n,3);
  86. InCH(arr,n);
  87. Sinhhoanvi(arr,n);
  88.  
  89. int i;
  90. do
  91. {
  92. i = Timsoi(arr,n-1);
  93. for(int j=n-1; j>=i; j-=2)
  94. {
  95. if(arr[j] > arr[i-2])
  96. {
  97. Hoanvi(arr[j], arr[i-2]);
  98. Xeptang(arr, n, i);
  99. KhoitaoCH(arr,n,3);
  100. Sinhhoanvi(arr,n);
  101. }
  102. }
  103. }
  104. while(i>0);
  105.  
  106. return 0;
  107. }
  108.  
Success #stdin #stdout 0s 15240KB
stdin
3
stdout
0	1	2	3	4	5	
0	1	2	5	4	3	
0	3	2	1	4	5	
0	3	2	5	4	1	
0	5	2	1	4	3	
0	5	2	3	4	1	
0	1	4	5	2	3	
0	3	4	1	2	5	
0	3	4	5	2	1	
0	5	4	1	2	3	
0	5	4	3	2	1