数列输出升序序号,ACM模式输入

如题,输入一行整数数组,以逗号隔开,请你将数组中的每个元素替换为它们升序排列后的序号。

img

img


示例2的输出是311356

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
    std::vector<int> nums;
    char ch;
    int x;
    while (std::cin >> x)
    {
        nums.push_back(x);
        std::cin >> ch;
    }
    auto sorted_nums = nums;
    std::sort(sorted_nums.begin(), sorted_nums.end());
    for (std::size_t i = 0; i < nums.size(); i++)
    {
        auto x = nums[i];
        auto itr = std::find(sorted_nums.begin(), sorted_nums.end(), x);
        auto pos = std::distance(sorted_nums.begin(), itr) + 1;
        std::cout << pos;
        if (i < nums.size() - 1)
            std::cout << ",";
    }
    return 0;
}

img


arr = input("输入多个数字逗号隔开:").replace(" ", "").split(',')

dic = {}
for idx, val in enuhttps://img-mid.csdnimg.cn/release/static/image/mid/ask/690002279466116.png "#left")
merate(sorted(arr)):
    if not dic.get(val):
        dic[val] = idx + 1

res = [dic[i] for i in arr]

print(res)