#include <algorithm>
#include <iostream>
#include <iterator>
#include <utility>
#include <vector>
using namespace std;
vector<size_t> rankSort(const vector<float>& v_temp) {
vector<pair<float, size_t> > v_sort(v_temp.size());
for (size_t i = 0U; i < v_sort.size(); ++i) {
v_sort[i] = make_pair(v_temp[i], i);
}
sort(v_sort.begin(), v_sort.end());
vector<size_t> result(v_temp.size());
for (size_t i = 0U; i != result.size(); ++i) {
result[i] = v_sort[i].second;
}
return result;
}
int main() {
const float v_temp[] = { 10.0F, 332.0F, 42.0F, 0.9F, 0.0F, 42.0F };
const vector<size_t> v_sort = rankSort(vector<float>(v_temp, v_temp + sizeof(v_temp) / sizeof(*v_temp)));
copy(v_sort.begin(), v_sort.end(), ostream_iterator<size_t>(cout, " "));
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDx1dGlsaXR5PgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZlY3RvcjxzaXplX3Q+IHJhbmtTb3J0KGNvbnN0IHZlY3RvcjxmbG9hdD4mIHZfdGVtcCkgewoJdmVjdG9yPHBhaXI8ZmxvYXQsIHNpemVfdD4gPiB2X3NvcnQodl90ZW1wLnNpemUoKSk7CgoJZm9yIChzaXplX3QgaSA9IDBVOyBpIDwgdl9zb3J0LnNpemUoKTsgKytpKSB7CgkJdl9zb3J0W2ldID0gbWFrZV9wYWlyKHZfdGVtcFtpXSwgaSk7Cgl9CgoJc29ydCh2X3NvcnQuYmVnaW4oKSwgdl9zb3J0LmVuZCgpKTsKCgl2ZWN0b3I8c2l6ZV90PiByZXN1bHQodl90ZW1wLnNpemUoKSk7CgoJZm9yIChzaXplX3QgaSA9IDBVOyBpICE9IHJlc3VsdC5zaXplKCk7ICsraSkgewoJCXJlc3VsdFtpXSA9IHZfc29ydFtpXS5zZWNvbmQ7Cgl9CglyZXR1cm4gcmVzdWx0Owp9CgppbnQgbWFpbigpIHsKCWNvbnN0IGZsb2F0IHZfdGVtcFtdID0geyAxMC4wRiwgMzMyLjBGLCA0Mi4wRiwgMC45RiwgMC4wRiwgNDIuMEYgfTsKCWNvbnN0IHZlY3RvcjxzaXplX3Q+IHZfc29ydCA9IHJhbmtTb3J0KHZlY3RvcjxmbG9hdD4odl90ZW1wLCB2X3RlbXAgKyBzaXplb2Yodl90ZW1wKSAvIHNpemVvZigqdl90ZW1wKSkpOwoKCWNvcHkodl9zb3J0LmJlZ2luKCksIHZfc29ydC5lbmQoKSwgb3N0cmVhbV9pdGVyYXRvcjxzaXplX3Q+KGNvdXQsICIgIikpOwp9