fork(3) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <limits.h>
  4.  
  5. void fixup(std::vector<int> &h){
  6. int j, k, v, n;
  7. bool heap;
  8.  
  9. n = h.size() - 1;
  10. for(int i = n/2; i >= 1; i--){
  11. k = i;
  12. v = h[k];
  13. heap = false;
  14. while(!heap && 2*k <= n){
  15. j = 2*k;
  16. if(j < n)
  17. if(h[j] < h[j + 1])
  18. j++;
  19. if(v >= h[j])
  20. heap = true;
  21. else{
  22. h[k] = h[j];
  23. k = j;
  24. }
  25. }
  26. h[k] = v;
  27. }
  28. }
  29.  
  30. int main(){
  31. int size = 7;
  32. int in;
  33. std::vector<int> v(size);
  34.  
  35. v[0] = INT_MAX;
  36. for(int i = 1; i <= size; i++){
  37. std::cin >> v[i];
  38. }
  39.  
  40. for(int i = 1; i < size; i++){
  41. std::cout << v[i] << " ";
  42. }
  43.  
  44. fixup(v);
  45.  
  46. std::cout << std::endl;
  47. for(int i = 1; i < size; i++){
  48. std::cout << v[i] << " ";
  49. }
  50. }
Success #stdin #stdout 0s 3416KB
stdin
1 2 4 5 7 10
stdout
1 2 4 5 7 10 
10 7 4 5 2 1