#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
class Compare
{
public:
Compare (const std::vector<double> &v) : m_v (v) {}
bool operator () (int i, int j) const { return m_v [i] < m_v [j]; }
private:
const std::vector<double> &m_v;
};
std::vector<int> order_ideal(const std::vector<double>& x) {
std::vector<int> idx(x.size());
std::iota(idx.begin(), idx.end(), 0);
Compare c (x);
std::sort(idx.begin(), idx.end(), c);
return idx;
}
int main ()
{
std::vector <double> x (20);
order_ideal (x);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bnVtZXJpYz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCmNsYXNzIENvbXBhcmUKewpwdWJsaWM6CiAgICBDb21wYXJlIChjb25zdCBzdGQ6OnZlY3Rvcjxkb3VibGU+ICZ2KSA6IG1fdiAodikge30KICAgIGJvb2wgb3BlcmF0b3IgKCkgKGludCBpLCBpbnQgaikgY29uc3QgeyByZXR1cm4gbV92IFtpXSA8IG1fdiBbal07IH0KCnByaXZhdGU6CiAgICBjb25zdCBzdGQ6OnZlY3Rvcjxkb3VibGU+ICZtX3Y7Cn07CgpzdGQ6OnZlY3RvcjxpbnQ+IG9yZGVyX2lkZWFsKGNvbnN0IHN0ZDo6dmVjdG9yPGRvdWJsZT4mIHgpIHsKICAgIHN0ZDo6dmVjdG9yPGludD4gaWR4KHguc2l6ZSgpKTsKICAgIHN0ZDo6aW90YShpZHguYmVnaW4oKSwgaWR4LmVuZCgpLCAwKTsKICAgIENvbXBhcmUgYyAoeCk7CiAgICBzdGQ6OnNvcnQoaWR4LmJlZ2luKCksIGlkeC5lbmQoKSwgYyk7CiAgICByZXR1cm4gaWR4Owp9CgppbnQgbWFpbiAoKQp7CiAgICBzdGQ6OnZlY3RvciA8ZG91YmxlPiB4ICgyMCk7CiAgICBvcmRlcl9pZGVhbCAoeCk7Cn0=