Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- vector<int> heap;
- void insert(int x){
- heap.push_back(x);
- int v=heap.size()-1;
- while (v>1){
- if (heap[v]>heap[v/2]) swap(heap[v], heap[v/2]);
- else break;
- v/=2;
- }
- }
- int getMax(){
- int res=heap[1];
- heap[1]=heap.back();
- heap.pop_back();
- int v=1;
- while (v<heap.size()){
- int l=v*2, r=v*2+1;
- if (l<heap.size()){
- if (r<heap.size() && heap[r]>heap[l]){
- l=r;
- }
- if (heap[v]<heap[l]) {
- swap(heap[v], heap[l]);
- }
- v=l;
- } else break;
- }
- return res;
- }
- int main() {
- heap.push_back(0);
- int i, n=5;
- for (i=0; i<n; i++){
- int x;
- cin>>x;
- insert(x);
- }
- vector<int> stack;
- for (i=0; i<n; i++){
- stack.push_back(getMax());
- }
- for (i=0; i<n; i++){
- cout<<stack.back()<<" ";
- stack.pop_back();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment