- 题目描述:
-
输入一个数组的值,求出各个值从小到大排序后的次序。
- 输入:
-
输入有多组数据。
每组输入的第一个数为数组的长度n(1<=n<=10000),后面的数为数组中的值,以空格分割。
- 输出:
-
各输入的值按从小到大排列的次序(最后一个数字后面没有空格)。
- 样例输入:
-
4 -3 75 12 -3
样例输出:
1 2 3 1
#include<iostream>
#include<algorithm>
#include<map>
#include<string>
#include<fstream>
#include<functional>
using namespace std;
int main()
{
int n,i,index,*arr1,*arr2;
map<int,int> mymap;
while(cin>>n)
{
arr1=(int *)malloc(sizeof(int)*n);
arr2=(int *)malloc(sizeof(int)*n);
for (i=0;i<n;i++)
{
cin>>arr1[i];
arr2[i]=arr1[i];
}
sort(arr2,arr2+n,less<int>());
index=1;
for (i=0;i<n;i++)
{
mymap.insert(pair<int,int>(arr2[i],index));
index++;
if (i!=0&&arr2[i]==arr2[i-1])
{
index--;
}
}
for (i=0;i<n;i++)
{
if (i==0)
{
cout<<mymap.find(arr1[i])->second;
}
else
{
cout<<" "<<mymap.find(arr1[i])->second;
}
}
cout<<endl;
}
return 0;
}