#include <cstdio>
#include <queue>
#include <list>
#include <deque>
#include <stack>
using namespace std;
priority_queue<int> q;
priority_queue<int, vector<int>, greater<int>> q_min, q2 = q_min;
// make_heap, push_heap, pop_heap
int main() {
q.push(10);
q.push(20);
q.push(15);
printf("%d\n", q.top()); // max
q_min.push(10);
q_min.push(20);
q_min.push(15);
printf("%d\n", q_min.top()); // max
q.pop(); // достать top()
q.size();
q.empty();
// decreaseKey
// erase произвольный элемент
}
typedef pair<int,int> pii;
void dijkstra() {
static vector<int> d, t;
int n = 10;
d.resize(n);
t.resize(n);
struct func {
bool operator() ( pii a, pii b ) {
return d[a.first] < d[b.first];
}
};
priority_queue<pii, vector<pii>, func> q;
int v = 0;
q.push(pii(v, t[v]));
t[v]++;
q.push(pii(v, t[v]));
// дейкстра на set-е
// set<pii> s;
// s.insert(pii(d[v], v));
}