Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3.  
  4. ifstream cin("prob5.in");
  5. ofstream cout("prob5.out");
  6. int h[100001], n;
  7.  
  8. bool comp(int a, int b) {
  9. return (a > b);
  10. }
  11.  
  12. void show(string s = "") {
  13. cout << s << ":\n";
  14. for(int i = 1; i <= n; ++i)
  15. cout << h[i] << ' ';
  16. cout << '\n';
  17. }
  18.  
  19. void read() {
  20. while(cin >> h[++n]);
  21. --n;
  22. }
  23.  
  24. void heapifyUp(int pos) {
  25. while(pos > 1 && comp(h[pos], h[pos >> 1])) {
  26. swap(h[pos], h[pos >> 1]);
  27. pos >>= 1;
  28. }
  29. }
  30.  
  31. void heapifyDown(int pos) {
  32. int son = 0;
  33. while(pos != son) {
  34. son = pos;
  35. if(2 * son <= n && !comp(h[pos], h[2 * son]))
  36. pos = 2 * son;
  37. if(2 * son + 1 <= n && !comp(h[pos], h[2 * son + 1]))
  38. pos = 2 * son + 1;
  39.  
  40. swap(h[pos], h[son]);
  41. }
  42. }
  43.  
  44. void buildHeap() {
  45. for(int i = 1; i <= n; ++i)
  46. heapifyUp(i);
  47. }
  48.  
  49. void del(int pos = 1) {
  50. swap(h[pos], h[n--]);
  51. heapifyDown(pos);
  52. }
  53.  
  54. int main() {
  55. read();
  56. show("Avem tabloul");
  57. buildHeap();
  58. show("Avem MaxHeapul");
  59.  
  60. del();
  61. show("Heapul dupa prima stergere");
  62. del();
  63. show("Heapul dupa a doua stergere");
  64. del();
  65. show("Heapul dupa a treia stergere");
  66. return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement