#include <iostream>
#include <queue>
using namespace std;
// Jakas klasa.
class X {
public:
int x;
X(int x) : x(x) {}
};
// Funktor porownujacy.
class XComparator {
public:
bool operator()(const X *x1, const X *x2) {
return (x1->x < x2->x);
}
};
int main() {
// Definicja kolejki z funktorem porownujacym.
priority_queue<X *, vector<X *>, XComparator> test;
// Dodanie elementow.
test.push(new X(5));
test.push(new X(10));
test.push(new X(-1));
test.push(new X(7));
// Jezeli dziala, powinno byc 10.
cout << test.top()->x;
// Zwolnienie pamieci.
while (!test.empty()) {
delete test.top();
test.pop();
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gSmFrYXMga2xhc2EuCmNsYXNzIFggewpwdWJsaWM6CgogIGludCB4OwoKICBYKGludCB4KSA6IHgoeCkge30KfTsKCi8vIEZ1bmt0b3IgcG9yb3dudWphY3kuCmNsYXNzIFhDb21wYXJhdG9yIHsKcHVibGljOgoKICBib29sIG9wZXJhdG9yKCkoY29uc3QgWCAqeDEsIGNvbnN0IFggKngyKSB7CiAgICByZXR1cm4gKHgxLT54IDwgeDItPngpOwogIH0KfTsKCmludCBtYWluKCkgewoKICAvLyBEZWZpbmljamEga29sZWpraSB6IGZ1bmt0b3JlbSBwb3Jvd251amFjeW0uCiAgcHJpb3JpdHlfcXVldWU8WCAqLCB2ZWN0b3I8WCAqPiwgWENvbXBhcmF0b3I+IHRlc3Q7CgogIC8vIERvZGFuaWUgZWxlbWVudG93LgogIHRlc3QucHVzaChuZXcgWCg1KSk7CiAgdGVzdC5wdXNoKG5ldyBYKDEwKSk7CiAgdGVzdC5wdXNoKG5ldyBYKC0xKSk7CiAgdGVzdC5wdXNoKG5ldyBYKDcpKTsKCiAgLy8gSmV6ZWxpIGR6aWFsYSwgcG93aW5ubyBieWMgMTAuCiAgY291dCA8PCB0ZXN0LnRvcCgpLT54OwoKICAvLyBad29sbmllbmllIHBhbWllY2kuCiAgd2hpbGUgKCF0ZXN0LmVtcHR5KCkpIHsKICAgIGRlbGV0ZSB0ZXN0LnRvcCgpOwogICAgdGVzdC5wb3AoKTsKICB9CgkKICByZXR1cm4gMDsKfQ==