fork download
  1. #include <stdio.h>
  2. #define height 4
  3. #define MAX height*height
  4.  
  5. int size=0;
  6. int t[MAX+1];
  7. void setT(int t[]){
  8. int i;
  9. for(i=0;i<MAX;i++){
  10. t[i]=-1;
  11. }
  12. }
  13. int ToL(int i){
  14. if(i*2>=MAX)return 0;
  15. return i*2;
  16. }
  17. int ToR(int i){
  18. if(i*2+1>=MAX)return 0;
  19. return 2*i+1;
  20. }
  21. void inT(int y){
  22. int i=1,k;
  23. for(k=0;k<height;k++){
  24. if(t[i]==-1){
  25. t[i]=y;
  26. size++;
  27. return;
  28. }else if(t[i]>y){
  29. i=ToL(i);
  30. }else{
  31. i=ToR(i);
  32. }
  33. }
  34. }
  35. int main(void) {
  36. int i,n,y;
  37. setT(t);
  38. scanf("%d",&n);
  39. for(i=0;i<n;i++){
  40. scanf("%d",&y);
  41. inT(y);
  42. }
  43. for(i=1;i<MAX;i++){
  44. printf("%d ",t[i]);
  45. }
  46. return 0;
  47. }
  48.  
Success #stdin #stdout 0s 5284KB
stdin
6
13 3 5 2 21 8
stdout
13 3 21 2 5 -1 -1 -1 -1 -1 8 -1 -1 -1 -1