fork download
  1. type mas=array [1..100] of integer;
  2. var a:mas;
  3. i,n:integer;
  4. procedure swap(var a,b:integer);
  5. var c:integer;
  6. begin
  7. c:=a;
  8. a:=b;
  9. b:=c;
  10. end;
  11. procedure maxheapify(var a:mas; n,i:integer);
  12. var max:integer;
  13. begin
  14. max:=i;
  15. if (2*i+1)<=n then
  16. if a[2*i+1]>a[i] then max:=2*i+1;
  17. if 2*i<=n then
  18. if a[2*i]>a[max] then max:=2*i;
  19. if max<>i then
  20. begin
  21. swap(a[i],a[max]);
  22. maxheapify(a,n,max);
  23. end;
  24. end;
  25. procedure buildheap(var a:mas; n:integer);
  26. var i:integer;
  27. begin
  28. for i:=n div 2 downto 1 do
  29. maxheapify(a,n,i);
  30. end;
  31. begin
  32. readln(n);
  33. for i:=1 to n do
  34. read(a[i]);
  35. buildheap(a,n);
  36. for i:=n downto 2 do
  37. begin
  38. swap(a[i],a[1]);
  39. maxheapify(a,i-1,1);
  40. end;
  41. for i:=1 to n do
  42. write(a[i],' ');
  43. end.
Success #stdin #stdout 0s 4532KB
stdin
Standard input is empty
stdout
Standard output is empty