题目要求相等元素相对顺序不变。
输入:
3
2 2 1
输出:
3 3 3
我的做法使用pair记录元素的值和下标,对pair排序,然后使用排序后的下标对原来下标上的元素重新赋值。这样就能保证每个元素都不同。
vector<pair<int, int>> arr(n + 1);
for (int i = 1; i <= n; i++) {
cin >> arr[i].first;
arr[i].second = i;
}
sort(1 + arr.begin(), arr.end());
for (int i = 1; i <= n; i++) {
a[arr[i].second] = i;
}
注意输出时行末不能有空格。