#include <algorithm>
#include <iostream>
#include <utility>
#include <vector>
using namespace std;
int main()
{
constexpr int N = 4;
vector<vector <int> > P {{1, 0, 0, 0}, {0, 0, 0, 1}, {1, 1, 0, 0}, {1, 0, 0, 0}};
std::vector<double> f = {3, 3, 2, 3};
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
{
cout<<P[i][j];
}
cout<<endl;
}
cout<<endl;
vector< pair<double, vector<int> > > X;
for (int i=0;i<N;i++)
X.push_back(make_pair(f[i],P[i]));
////Sorting fitness descending order
stable_sort(X.rbegin(), X.rend(), [](const auto&lhs, const auto& rhs) { return lhs.first < rhs.first; });
for(int i=0;i<4;i++)
{
P[i]=X[i].second;
f[i]=X[i].first;
}
for(int i=0;i<N;i++)
{
for(int j=0;j<4;j++)
{
cout<<P[i][j];
}
cout<<endl;
}
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKICAgIGNvbnN0ZXhwciBpbnQgTiA9IDQ7Cgl2ZWN0b3I8dmVjdG9yIDxpbnQ+ID4gUCB7ezEsIDAsIDAsIDB9LCB7MCwgMCwgMCwgMX0sIHsxLCAxLCAwLCAwfSwgezEsIDAsIDAsIDB9fTsKCXN0ZDo6dmVjdG9yPGRvdWJsZT4gZiA9IHszLCAzLCAyLCAzfTsKCWZvcihpbnQgaT0wO2k8NDtpKyspCgl7CgkgICAgZm9yKGludCBqPTA7ajw0O2orKykKCSAgICB7CgkgICAgIGNvdXQ8PFBbaV1bal07CgkgICAgfQoJICAgIGNvdXQ8PGVuZGw7Cgl9Cgljb3V0PDxlbmRsOwoJdmVjdG9yPCBwYWlyPGRvdWJsZSwgdmVjdG9yPGludD4gPiA+IFg7IAoJZm9yIChpbnQgaT0wO2k8TjtpKyspCgkgICAgICAgIFgucHVzaF9iYWNrKG1ha2VfcGFpcihmW2ldLFBbaV0pKTsKCQoJLy8vL1NvcnRpbmcgZml0bmVzcyBkZXNjZW5kaW5nIG9yZGVyCglzdGFibGVfc29ydChYLnJiZWdpbigpLCBYLnJlbmQoKSwgW10oY29uc3QgYXV0byZsaHMsIGNvbnN0IGF1dG8mIHJocykgeyByZXR1cm4gbGhzLmZpcnN0IDwgcmhzLmZpcnN0OyB9KTsKCWZvcihpbnQgaT0wO2k8NDtpKyspCgl7CgkgIFBbaV09WFtpXS5zZWNvbmQ7CgkgIGZbaV09WFtpXS5maXJzdDsKCX0KCWZvcihpbnQgaT0wO2k8TjtpKyspCgl7CgkgICAgZm9yKGludCBqPTA7ajw0O2orKykKCSAgICB7CgkgICAgIGNvdXQ8PFBbaV1bal07CgkgICAgfQoJICAgIGNvdXQ8PGVuZGw7Cgl9Cn0=