#include <queue>
#include <vector>
#include <functional>
using namespace std;
int main(){
typedef pair<int,float> ifpair;
bool(*comp)(ifpair,ifpair) = []( ifpair a, ifpair b ) { return a.second > b.second; };
typedef priority_queue< ifpair , vector<ifpair>, decltype( comp ) > t_npq;
t_npq npq( comp );
//do something with npq. finish using it (without emptying it) and clear for next round
t_npq empty( comp );
swap(npq , empty);
}
I2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCl7CiAgICB0eXBlZGVmIHBhaXI8aW50LGZsb2F0PiBpZnBhaXI7CiAgICBib29sKCpjb21wKShpZnBhaXIsaWZwYWlyKSA9IFtdKCBpZnBhaXIgYSwgIGlmcGFpciBiICkgeyByZXR1cm4gYS5zZWNvbmQgPiBiLnNlY29uZDsgfTsKICAgIHR5cGVkZWYgcHJpb3JpdHlfcXVldWU8IGlmcGFpciAsIHZlY3RvcjxpZnBhaXI+LCBkZWNsdHlwZSggY29tcCApID4gdF9ucHE7CiAgICB0X25wcSBucHEoIGNvbXAgKTsKICAgIC8vZG8gc29tZXRoaW5nIHdpdGggbnBxLiBmaW5pc2ggdXNpbmcgaXQgKHdpdGhvdXQgZW1wdHlpbmcgaXQpIGFuZCBjbGVhciBmb3IgbmV4dCByb3VuZAogICAgdF9ucHEgZW1wdHkoIGNvbXAgKTsKICAgIHN3YXAobnBxICwgZW1wdHkpOwp9Cg==