//
//  main.cpp
//  Priority Queue
//
//  Created by Himanshu on 19/09/21.
//

#include <iostream>
#include <queue>
using namespace std;

int main () {
    
    priority_queue<int> pq;
    
    cout<<"Insert Q(x) {30, 100, 25, 40}"<<endl;
    pq.push(30);
    pq.push(100);
    pq.push(25);
    pq.push(40);
    
    cout<<"Maximum Element (Q)"<<endl;
    cout<<pq.top()<<endl;
    
    cout<<"Maximum Element (Q) after Extract-Max (Q)"<<endl;
    pq.pop();
    cout<<pq.top()<<endl;
    
    cout <<"Extracting out elements..."<<endl;
    while (!pq.empty()) {
        cout<< pq.top()<<" ";
        pq.pop();
    }
    cout<<endl;
    
    if (pq.empty()) {
        cout<<"Priority queue is empty"<<endl;
    } else {
        cout<<"Priority queue is not empty"<<endl;
    }
    
  return 0;
}
