#include <iostream>
#include <queue>
#include <vector>
using std::priority_queue;
using std::cout;
using std::vector;
class Base {
public:
virtual bool operator() (int l, int r) const {
cout << "Should not be called" << std::endl;
return 0;
}
virtual ~Base() {}
};
class A : public Base {
public:
bool operator() (int l, int r) const override {
cout << "Should be called!!!!";
return l < r;
}
};
int main() {
priority_queue<int, vector<int>, Base> pq((A()));
pq.push(1);
pq.push(2);
pq.push(3);
pq.push(0);
cout << pq.top();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDx2ZWN0b3I+CiAKdXNpbmcgc3RkOjpwcmlvcml0eV9xdWV1ZTsKdXNpbmcgc3RkOjpjb3V0Owp1c2luZyBzdGQ6OnZlY3RvcjsKIApjbGFzcyBCYXNlIHsKCXB1YmxpYzoKCXZpcnR1YWwgYm9vbCBvcGVyYXRvcigpIChpbnQgbCwgaW50IHIpIGNvbnN0IHsKCQljb3V0IDw8ICJTaG91bGQgbm90IGJlIGNhbGxlZCIgPDwgc3RkOjplbmRsOwoJCXJldHVybiAwOwoJfQoJdmlydHVhbCB+QmFzZSgpIHt9Cn07CmNsYXNzIEEgOiBwdWJsaWMgQmFzZSB7IAoJcHVibGljOgoJYm9vbCBvcGVyYXRvcigpIChpbnQgbCwgaW50IHIpIGNvbnN0IG92ZXJyaWRlIHsKCQljb3V0IDw8ICJTaG91bGQgYmUgY2FsbGVkISEhISI7CgkJcmV0dXJuIGwgPCByOwoJfQp9OwppbnQgbWFpbigpIHsKCXByaW9yaXR5X3F1ZXVlPGludCwgdmVjdG9yPGludD4sIEJhc2U+IHBxKChBKCkpKTsKCXBxLnB1c2goMSk7CglwcS5wdXNoKDIpOwoJcHEucHVzaCgzKTsKCXBxLnB1c2goMCk7Cgljb3V0IDw8IHBxLnRvcCgpOwoJcmV0dXJuIDA7Cn0=