#include <iostream>
#include <vector>
#include <algorithm>
class punto
{
private:
int x;
int y;
public:
punto() = default; // since you simply wanna initilize them
~punto(){}
void setx(int xn){ x = xn;}
void sety(int yn) { y = yn; }
bool operator<(const punto& obj)
{ return this->y < obj.y; }
// define getters to access the private memebers
const int& getX()const { return x; }
const int& getY()const { return y; }
// overload operator<< to print the object of this class
friend std::ostream& operator<<(std::ostream& out, const punto& obj);
};
std::ostream& operator<<(std::ostream& out, const punto& obj)
{ return out << obj.getX() << " " << obj.getY(); }
int main()
{
std::vector<punto> list;
int x, y, n;
punto p1;
std::cin >> n;
for(int contador=0; contador<n; contador++)
{
std::cin >> x >> y;
p1.setx(x);
p1.sety(y);
list.push_back(p1);
}
std::cout <<"w.r.t Ys" <<std::endl;
// to sort w.r.t Ys: simply std::sort()
std::sort(list.begin(), list.end());
// now you can print the objects like this
for(const punto& it: list) std::cout << it << std::endl;
std::cout <<"w.r.t Xs" <<std::endl;
// to sort w.r.t Xs: std::sort() with lambda
std::sort(list.begin(), list.end(),[](const punto& lhs, const punto& rhs)->bool
{ return lhs.getX() < rhs.getX(); });
for(const punto& it: list) std::cout << it << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKY2xhc3MgcHVudG8Kewpwcml2YXRlOgogICBpbnQgeDsKICAgaW50IHk7CnB1YmxpYzoKICAgcHVudG8oKSA9IGRlZmF1bHQ7IC8vIHNpbmNlIHlvdSBzaW1wbHkgd2FubmEgaW5pdGlsaXplIHRoZW0KICAgfnB1bnRvKCl7fQogICB2b2lkIHNldHgoaW50IHhuKXsgeCA9IHhuO30KICAgdm9pZCBzZXR5KGludCB5bikgeyB5ID0geW47IH0KCiAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IHB1bnRvJiBvYmopCiAgIHsgIHJldHVybiB0aGlzLT55IDwgb2JqLnk7ICB9CiAgIC8vIGRlZmluZSBnZXR0ZXJzIHRvIGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1lYmVycwogICBjb25zdCBpbnQmIGdldFgoKWNvbnN0IHsgcmV0dXJuIHg7IH0KICAgY29uc3QgaW50JiBnZXRZKCljb25zdCB7IHJldHVybiB5OyB9CiAgIC8vIG92ZXJsb2FkIG9wZXJhdG9yPDwgdG8gcHJpbnQgdGhlIG9iamVjdCBvZiB0aGlzIGNsYXNzCiAgIGZyaWVuZCBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0IHB1bnRvJiBvYmopOwp9OwpzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0IHB1bnRvJiBvYmopCnsgIHJldHVybiBvdXQgPDwgb2JqLmdldFgoKSA8PCAiICIgPDwgb2JqLmdldFkoKTsgIH0KCgppbnQgbWFpbigpCnsKICAgc3RkOjp2ZWN0b3I8cHVudG8+IGxpc3Q7CiAgIGludCB4LCB5LCBuOwogICBwdW50byBwMTsKCiAgIHN0ZDo6Y2luID4+IG47CiAgIGZvcihpbnQgY29udGFkb3I9MDsgY29udGFkb3I8bjsgY29udGFkb3IrKykKICAgewogICAgICBzdGQ6OmNpbiA+PiB4ID4+IHk7CiAgICAgIHAxLnNldHgoeCk7CiAgICAgIHAxLnNldHkoeSk7CiAgICAgIGxpc3QucHVzaF9iYWNrKHAxKTsKICAgfQogICBzdGQ6OmNvdXQgPDwidy5yLnQgWXMiIDw8c3RkOjplbmRsOwogICAvLyB0byBzb3J0IHcuci50IFlzOiBzaW1wbHkgc3RkOjpzb3J0KCkKICAgc3RkOjpzb3J0KGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSk7CiAgIC8vIG5vdyB5b3UgY2FuIHByaW50IHRoZSBvYmplY3RzIGxpa2UgdGhpcwogICBmb3IoY29uc3QgcHVudG8mIGl0OiBsaXN0KSAgICBzdGQ6OmNvdXQgPDwgaXQgPDwgc3RkOjplbmRsOwoKICAgc3RkOjpjb3V0IDw8Incuci50IFhzIiA8PHN0ZDo6ZW5kbDsKICAgLy8gdG8gc29ydCB3LnIudCBYczogc3RkOjpzb3J0KCkgd2l0aCBsYW1iZGEKICAgc3RkOjpzb3J0KGxpc3QuYmVnaW4oKSwgbGlzdC5lbmQoKSxbXShjb25zdCBwdW50byYgbGhzLCBjb25zdCBwdW50byYgcmhzKS0+Ym9vbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICByZXR1cm4gbGhzLmdldFgoKSA8IHJocy5nZXRYKCk7IH0pOwoKICAgZm9yKGNvbnN0IHB1bnRvJiBpdDogbGlzdCkgICAgc3RkOjpjb3V0IDw8IGl0IDw8IHN0ZDo6ZW5kbDsKCiAgIHJldHVybiAwOwp9Cg==