fork download
  1. #include <algorithm>
  2. #include "dheap.h"
  3.  
  4. const int d = 19;
  5.  
  6. //Всплытие
  7. void siftup(int *a, int i){
  8. int p = (i - 1) / d;
  9. while((i != 0) && (a[p] > a[i])){
  10. std::swap(i, p);
  11. i = p;
  12. p = (i - 1) / d;
  13. }
  14. }
  15.  
  16. //n - длина массива
  17. int min_child(int *a, int i, int n){
  18. if(i*d + 1 >= n) return 0;
  19. else{
  20. int s = i*d + 1;
  21. int min_key = a[s];
  22. int last = (i + 1)*d;
  23. if(last >= n) last = n - 1;
  24. for(int j = s+1; j <= last; j++){
  25. if(min_key > a[j]){
  26. min_key = a[j];
  27. s = j;
  28. }
  29. return s;
  30. }
  31. }
  32. }
  33.  
  34. //Погружение
  35. void siftdown(int *a, int i, int n){
  36. int s = min_child(a, i, n);
  37. while((s != 0) && (a[i] > a[s])){
  38. std::swap(i, s);
  39. i = s;
  40. s = min_child(a, i, n);
  41. }
  42. }
  43.  
  44. //Преобразование массива в кучу
  45. void build_dheap(int *a, int n){
  46. for(int i = (n - 1)/d; i >= 0; i--)
  47. siftdown(a, i, n);
  48. }
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:2:19: fatal error: dheap.h: No such file or directory
 #include "dheap.h"
                   ^
compilation terminated.
stdout
Standard output is empty