#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct WG
{
string name;
int points;
int level;
WG() {}
WG(const string& name, int points, int level)
: name(name), points(points), level(level) {}
bool operator<(WG const& o) const {
// zwracasz true jesli obiekt "*this" ma wystepowac przed obiektem "o" po posortowaniu
return name < o.name || (name == o.name && points < o.points);
}
};
int main()
{
vector<WG> v;
v.push_back(WG("asd", 123, 0));
v.push_back(WG("xyz", 123, 1));
v.push_back(WG("xyz", 121, 2));
v.push_back(WG("asd", 121, 3));
sort(v.begin(), v.end());
for (size_t i = 0; i < v.size(); i++)
{
cout << "v[" << i << "] = { \""
<< v[i].name << "\", "
<< v[i].points << ", "
<< v[i].level << " }" << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBXRwp7CiAgICBzdHJpbmcgbmFtZTsKICAgIGludCBwb2ludHM7CiAgICBpbnQgbGV2ZWw7CiAgICBXRygpIHt9CiAgICBXRyhjb25zdCBzdHJpbmcmIG5hbWUsIGludCBwb2ludHMsIGludCBsZXZlbCkKICAgICAgOiBuYW1lKG5hbWUpLCBwb2ludHMocG9pbnRzKSwgbGV2ZWwobGV2ZWwpIHt9CiAgICAgIAogICAgYm9vbCBvcGVyYXRvcjwoV0cgY29uc3QmIG8pIGNvbnN0IHsKICAgIAkvLyB6d3JhY2FzeiB0cnVlIGplc2xpIG9iaWVrdCAiKnRoaXMiIG1hIHd5c3RlcG93YWMgcHJ6ZWQgb2JpZWt0ZW0gIm8iIHBvIHBvc29ydG93YW5pdQogICAgICAgIHJldHVybiBuYW1lIDwgby5uYW1lIHx8IChuYW1lID09IG8ubmFtZSAmJiBwb2ludHMgPCBvLnBvaW50cyk7CiAgICB9Cn07CgppbnQgbWFpbigpCnsKCXZlY3RvcjxXRz4gdjsKCXYucHVzaF9iYWNrKFdHKCJhc2QiLCAxMjMsIDApKTsKCXYucHVzaF9iYWNrKFdHKCJ4eXoiLCAxMjMsIDEpKTsKCXYucHVzaF9iYWNrKFdHKCJ4eXoiLCAxMjEsIDIpKTsKCXYucHVzaF9iYWNrKFdHKCJhc2QiLCAxMjEsIDMpKTsKCXNvcnQodi5iZWdpbigpLCB2LmVuZCgpKTsKCWZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkrKykKCXsKCQljb3V0IDw8ICJ2WyIgPDwgaSA8PCAiXSA9IHsgXCIiCgkJICAgIDw8IHZbaV0ubmFtZSA8PCAiXCIsICIKCQkgICAgPDwgdltpXS5wb2ludHMgPDwgIiwgIgoJCSAgICA8PCB2W2ldLmxldmVsIDw8ICIgfSIgPDwgZW5kbDsKCX0KCXJldHVybiAwOwp9
v[0] = { "asd", 121, 3 }
v[1] = { "asd", 123, 0 }
v[2] = { "xyz", 121, 2 }
v[3] = { "xyz", 123, 1 }