a53

heap

a53
Sep 29th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4. long long h[250005],n,m;
  5. void heapup(int v)
  6. {
  7. int k=h[v],aux;
  8. while(v/2>0 && k>h[v/2])
  9. {
  10. aux=h[v];
  11. h[v]=h[v/2];
  12. h[v/2]=aux;
  13. v=v/2;
  14. }
  15. h[v]=k;
  16. }
  17. void heapdown(int v)
  18. {
  19. int w,aux;
  20. w=v*2;
  21. while(w<=n)
  22. {
  23. if(w+1<=n && h[w+1]>h[w])
  24. {
  25. w++;
  26. }
  27. if(h[v]>=h[w]) return;
  28. aux=h[v];
  29. h[v]=h[w];
  30. h[w]=aux;
  31. v=w;
  32. w=w*2;
  33. }
  34. }
  35. int main()
  36. {
  37. int i,op,x;
  38. ifstream f("heap.in");
  39. ofstream g("heap.out");
  40. f>>m;
  41. for(i=1;i<=m;i++)
  42. {
  43. f>>op;
  44. if(op==1)
  45. {
  46. f>>x;
  47. n=n+1;
  48. h[n]=x;
  49. heapup(n);
  50. }
  51. else
  52. {
  53. g<<h[1]<<"\n";
  54. h[1]=h[n--];
  55. heapdown(1);
  56. }
  57. }
  58. return 0;
  59. }
Add Comment
Please, Sign In to add comment