Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- long long h[250005],n,m;
- void heapup(int v)
- {
- int k=h[v],aux;
- while(v/2>0 && k>h[v/2])
- {
- aux=h[v];
- h[v]=h[v/2];
- h[v/2]=aux;
- v=v/2;
- }
- h[v]=k;
- }
- void heapdown(int v)
- {
- int w,aux;
- w=v*2;
- while(w<=n)
- {
- if(w+1<=n && h[w+1]>h[w])
- {
- w++;
- }
- if(h[v]>=h[w]) return;
- aux=h[v];
- h[v]=h[w];
- h[w]=aux;
- v=w;
- w=w*2;
- }
- }
- int main()
- {
- int i,op,x;
- ifstream f("heap.in");
- ofstream g("heap.out");
- f>>m;
- for(i=1;i<=m;i++)
- {
- f>>op;
- if(op==1)
- {
- f>>x;
- n=n+1;
- h[n]=x;
- heapup(n);
- }
- else
- {
- g<<h[1]<<"\n";
- h[1]=h[n--];
- heapdown(1);
- }
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment