#include <iostream>
#include <queue>
#include <cmath>
class C {
private:
double a, b;
public:
C() {}
C(double a, double b) { this->a = a; this->b = b; }
friend double myabs(C c) { return sqrt(c.a * c.a + c.b * c.b); }
friend std::ostream &operator<<(std::ostream &s, C &c) {
s << '(' << c.a << ',' << c.b << ')';
return s;
}
};
class CCompare {
public:
bool operator()(C &r, C &s) { return myabs(r) < myabs(s); }
};
int main() {
C c;
std::priority_queue<C, std::vector<C>, CCompare> pq;
pq.push(C(3, 1));
pq.push(C(4, 1));
pq.push(C(5, 9));
pq.push(C(2, 6));
pq.push(C(5, 3));
while (!pq.empty()) {
c = pq.top();
pq.pop();
std::cout << c << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxjbWF0aD4KCmNsYXNzIEMgewpwcml2YXRlOgogIGRvdWJsZSBhLCBiOwpwdWJsaWM6CiAgQygpIHt9CiAgQyhkb3VibGUgYSwgZG91YmxlIGIpIHsgdGhpcy0+YSA9IGE7IHRoaXMtPmIgPSBiOyB9CiAgZnJpZW5kIGRvdWJsZSBteWFicyhDIGMpIHsgcmV0dXJuIHNxcnQoYy5hICogYy5hICsgYy5iICogYy5iKTsgfQogIGZyaWVuZCBzdGQ6Om9zdHJlYW0gJm9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtICZzLCBDICZjKSB7CiAgICBzIDw8ICcoJyA8PCBjLmEgPDwgJywnIDw8IGMuYiA8PCAnKSc7CiAgICByZXR1cm4gczsKICB9Cn07CgpjbGFzcyBDQ29tcGFyZSB7CnB1YmxpYzoKICBib29sIG9wZXJhdG9yKCkoQyAmciwgQyAmcykgeyByZXR1cm4gbXlhYnMocikgPCBteWFicyhzKTsgfQp9OwoKaW50IG1haW4oKSB7CiAgQyBjOwogIHN0ZDo6cHJpb3JpdHlfcXVldWU8Qywgc3RkOjp2ZWN0b3I8Qz4sIENDb21wYXJlPiBwcTsKICBwcS5wdXNoKEMoMywgMSkpOwogIHBxLnB1c2goQyg0LCAxKSk7CiAgcHEucHVzaChDKDUsIDkpKTsKICBwcS5wdXNoKEMoMiwgNikpOwogIHBxLnB1c2goQyg1LCAzKSk7CiAgd2hpbGUgKCFwcS5lbXB0eSgpKSB7CiAgICBjID0gcHEudG9wKCk7CiAgICBwcS5wb3AoKTsKICAgIHN0ZDo6Y291dCA8PCBjIDw8IHN0ZDo6ZW5kbDsKICB9CiAgcmV0dXJuIDA7Cn0KCiAg