Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin ("heap.in");
- ofstream fout ("heap.out");
- int m, n, h[250005];
- void Urca(int i)
- {
- int tata;
- while(i > 1)
- {
- tata = i / 2;
- if(h[tata] >= h[i])
- return;
- swap(h[tata], h[i]);
- i = tata;
- }
- }
- void Coboara(int i)
- {
- int fiu;
- while(i <= n / 2)
- {
- fiu = 2 * i;
- if(fiu + 1 <= n && h[fiu] <= h[fiu + 1])
- fiu++;
- if(h[i] >= h[fiu])
- return;
- swap(h[i], h[fiu]);
- i = fiu;
- }
- }
- int main()
- {
- int i, x;
- fin >> m;
- for(i=1; i<=m; i++)
- {
- fin >> x;
- if(x == 1)
- {
- n++;
- fin >> h[n];
- Urca(n);
- }
- else
- {
- fout << h[1] << "\n";
- h[1] = h[n];
- n--;
- Coboara(1);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement