#include <algorithm>
#include <iostream>
#include <iterator>
#include <unordered_map>
#include <vector>
int main()
{
using vi = std::vector<int>;
using vf = std::vector<float>;
vi indices = {2, 4, 8, 1};
vf values = {1.5, 0.5, 2.5, 4.5};
std::unordered_map<int, float> correspondences;
std::transform(begin(indices), end(indices), begin(values),
std::inserter(correspondences, end(correspondences)),
[](int i, float v) { return std::make_pair(i, v); });
std::sort(begin(indices), end(indices),
[&correspondences](int l, int r) {
return correspondences.at(l) < correspondences.at(r);
});
std::copy(begin(indices), end(indices), std::ostream_iterator<int>(std::cout, ", "));
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgojaW5jbHVkZSA8dmVjdG9yPgoKaW50IG1haW4oKQp7Cgl1c2luZyB2aSA9IHN0ZDo6dmVjdG9yPGludD47Cgl1c2luZyB2ZiA9IHN0ZDo6dmVjdG9yPGZsb2F0PjsKCQoJdmkgaW5kaWNlcyA9IHsyLCA0LCA4LCAxfTsKCXZmIHZhbHVlcyA9IHsxLjUsIDAuNSwgMi41LCA0LjV9OwoJCglzdGQ6OnVub3JkZXJlZF9tYXA8aW50LCBmbG9hdD4gY29ycmVzcG9uZGVuY2VzOwoJc3RkOjp0cmFuc2Zvcm0oYmVnaW4oaW5kaWNlcyksIGVuZChpbmRpY2VzKSwgYmVnaW4odmFsdWVzKSwKCQlzdGQ6Omluc2VydGVyKGNvcnJlc3BvbmRlbmNlcywgZW5kKGNvcnJlc3BvbmRlbmNlcykpLAoJCVtdKGludCBpLCBmbG9hdCB2KSB7IHJldHVybiBzdGQ6Om1ha2VfcGFpcihpLCB2KTsgfSk7CglzdGQ6OnNvcnQoYmVnaW4oaW5kaWNlcyksIGVuZChpbmRpY2VzKSwKCQlbJmNvcnJlc3BvbmRlbmNlc10oaW50IGwsIGludCByKSB7CgkJCXJldHVybiBjb3JyZXNwb25kZW5jZXMuYXQobCkgPCBjb3JyZXNwb25kZW5jZXMuYXQocik7CgkJfSk7CglzdGQ6OmNvcHkoYmVnaW4oaW5kaWNlcyksIGVuZChpbmRpY2VzKSwgc3RkOjpvc3RyZWFtX2l0ZXJhdG9yPGludD4oc3RkOjpjb3V0LCAiLCAiKSk7Cn0=