Advertisement
Guest User

Gabriel

a guest
Sep 19th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. void heapify(int* v, int n, int i){
  5. int menor, aux;
  6. while(i<=n/2){
  7. printf("Aquii\n");
  8. if(i<n/2){
  9. printf("Aqui\n");
  10. if(v[2*i]<v[2*i+1]){
  11. menor=2*i;
  12. } else{
  13. menor=2*i+1;
  14. }
  15. } else{
  16. menor=2*i;
  17. }
  18. if(v[i]>v[menor]){
  19. aux=v[i];
  20. v[i]=v[menor];
  21. v[menor]=aux;
  22. i=menor;
  23. } else{
  24. i=n;
  25. }
  26. }
  27. }
  28.  
  29.  
  30. void constroiHeap(int* v, int n){
  31. int i;
  32. for(i=n/2;i>=1;i--){
  33. heapify(v, n, i);
  34. }
  35. }
  36.  
  37. void heapsort(int* v, int n){
  38. int j, aux;
  39. constroiHeap(v, n);
  40. for(j=n;j>=2;j--){
  41. aux=v[j];
  42. v[j]=v[1];
  43. v[1]=aux;
  44. heapify(v, j-1, 1);
  45. }
  46. }
  47. int comparar (const void * a, const void * b)
  48. {
  49. return ( *(int*)b - *(int*)a);
  50. }
  51.  
  52.  
  53. int main(){
  54. int t,n,j, i;
  55. int aux;
  56. int v[100000];
  57.  
  58. scanf("%d", &t);
  59. for(i=0;i<t;i++){
  60. scanf("%d", &n);
  61. for(j=0;j<n;j++){
  62. scanf("%d", &v[j]);
  63. }
  64. /*heapsort(v, n);
  65. if(v[n]==1 || v[n]==2 || v[n]==3){
  66. if(v[n]==1){
  67. n1=n;
  68. if(v[n-1]==2||v[n-1]==3){
  69. if(v[n-1]==2){
  70. n2=n-1;
  71. if(v[n-2]==3){
  72. n3=n-2;
  73. }
  74. } else{
  75. n3=n-2;
  76. }
  77. }
  78. } else{
  79. if(v[n]==2){
  80. n2=n;
  81. if(v[n-1]==3){
  82. n3=n-1;
  83. }
  84. } else{
  85. n3=n;
  86. }
  87. }
  88.  
  89. }*/
  90. qsort(v,n,sizeof(int),comparar);
  91. if(v[n-1]==1){
  92. printf("%d", v[n-1]);
  93. n--;
  94. }
  95. while(v[n-1]==1&&n>0){
  96. printf(" %d", v[n-1]);
  97. n--;
  98. }
  99. if(n==2&&v[n-1]==2&&v[n-2]==3){
  100. aux=v[n-1];
  101. v[n-1]=v[n-2];
  102. v[n-2]=aux;
  103. }
  104. /*if(n>0){
  105. printf("%d", v[0]);
  106. }*/
  107.  
  108. for(j=0;j<n;j++){
  109. printf(" %d", v[j]);
  110. }
  111. printf("\n");
  112. }
  113. return 0;
  114.  
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement