// priority_queue
#include <iostream>
#include <queue> // priority_queue агуулж буй сан
using namespace std;
int main() {
/*
priority_queue гэдэг нь хамгийн их утгатай элемэнтийг
хамгийн эхэнд нь хадгалдаг. Энэ нь эрэмбэлдэг гэсэн
үг биш юм. Ашигтай тал нь гэвэл элемэнт нэмэх, болон
хамгийн их элемэнтийг устгахад log(N) үйлдэл хийнэ.
Харин хамгийн их элемэнтийг мэдэхэд 1 үйлдэл юм.
*/
priority_queue <int> pq; // int төрлийн утга авдаг
// priority_queue (анх хоосон)
pq.push( 3 ); // 3 гэсэн элемэнтийг нэмж өгж байна.
cout << pq.top() << endl; // одоогийн байдлаар хамгийн их
// элемэнтийг хэвлэж байна.
cout << "-------------------------------------------\n";
pq.push( 4 ); // 4 гэсэн элемэнтийг нэмж өгж байна.
cout << pq.top() << endl; // одоогийн байдлаар хамгийн их
// элемэнтийг хэвлэж байна.
cout << "-------------------------------------------\n";
pq.push( 2 ); // 2 гэсэн элемэнтийг нэмж өгж байна.
cout << pq.top() << endl; // одоогийн байдлаар хамгийн их
// элемэнтийг хэвлэж байна.
cout << "-------------------------------------------\n";
pq.pop();
cout << pq.top() << endl; // одоогийн байдлаар хамгийн их
// элемэнтийг хэвлэж байна.
cout << "-------------------------------------------\n";
pq.pop();
cout << pq.top() << endl; // одоогийн байдлаар хамгийн их
// элемэнтийг хэвлэж байна.
cout << "-------------------------------------------\n";
cout << pq.size() << endl; // одоо байгаа элемэнтийн хэмжээг хэвлэхы
return 0;
}