#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Ship
{
public:
Ship(){}
Ship(string name, int distance)
{
mName = name;
mDistance = distance;
}
~Ship(){}
friend ostream & operator << (ostream &out, const Ship &ship);
bool operator < (const Ship& str) const
{
return (mDistance < str.mDistance);
}
private:
string mName;
int mDistance;
};
ostream & operator << (ostream &out, const Ship &ship)
{
return out << ship.mName << endl;
}
int main() {
vector<Ship*> ships;
ships.push_back(new Ship("some1", 20));
ships.push_back(new Ship("some2", 10));
ships.push_back(new Ship("some3", 5));
ships.push_back(new Ship("some4", 40));
sort(ships.begin(), ships.end());
for (Ship *ship : ships)
{
cout << *ship;
delete ship;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmNsYXNzIFNoaXAKewpwdWJsaWM6CiAgICBTaGlwKCl7fQogICAgU2hpcChzdHJpbmcgbmFtZSwgaW50IGRpc3RhbmNlKQogICAgewogICAgICAgIG1OYW1lID0gbmFtZTsKICAgICAgICBtRGlzdGFuY2UgPSBkaXN0YW5jZTsKICAgIH0KICAgIH5TaGlwKCl7fQogICAgZnJpZW5kIG9zdHJlYW0gJiBvcGVyYXRvciA8PCAob3N0cmVhbSAmb3V0LCBjb25zdCBTaGlwICZzaGlwKTsKICAgIGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgU2hpcCYgc3RyKSBjb25zdAogICAgewogICAgICAgIHJldHVybiAobURpc3RhbmNlIDwgc3RyLm1EaXN0YW5jZSk7CiAgICB9CnByaXZhdGU6CiAgICBzdHJpbmcgbU5hbWU7CiAgICBpbnQgbURpc3RhbmNlOwp9OwoKb3N0cmVhbSAmIG9wZXJhdG9yIDw8IChvc3RyZWFtICZvdXQsIGNvbnN0IFNoaXAgJnNoaXApIAp7CiAgIHJldHVybiBvdXQgPDwgc2hpcC5tTmFtZSA8PCBlbmRsOwp9CgoKaW50IG1haW4oKSB7Cgl2ZWN0b3I8U2hpcCo+IHNoaXBzOwoJc2hpcHMucHVzaF9iYWNrKG5ldyBTaGlwKCJzb21lMSIsIDIwKSk7CglzaGlwcy5wdXNoX2JhY2sobmV3IFNoaXAoInNvbWUyIiwgMTApKTsKCXNoaXBzLnB1c2hfYmFjayhuZXcgU2hpcCgic29tZTMiLCA1KSk7CglzaGlwcy5wdXNoX2JhY2sobmV3IFNoaXAoInNvbWU0IiwgNDApKTsKCQoJc29ydChzaGlwcy5iZWdpbigpLCBzaGlwcy5lbmQoKSk7CgkKCWZvciAoU2hpcCAqc2hpcCA6IHNoaXBzKQoJewoJCWNvdXQgPDwgKnNoaXA7CgkJZGVsZXRlIHNoaXA7Cgl9CgkKCXJldHVybiAwOwp9