#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, " "));
}