离散化模板题 II ——重复元素离散化后的数字不相同
题目描述
现有数列A1, A2, ⋯, An,数列中可能有重复元素。
现在要求输出该数列的离散化数列,重复元素离散化后的数字不相同。
现在要求输出该数列的离散化数列,重复元素离散化后的数字不相同。
输入
第一行,一个整数 n。
第二行,n 个整数整数 A1, A2, ⋯, An。
第二行,n 个整数整数 A1, A2, ⋯, An。
输出
一行,包括 n 整数。表示数列对应的离散化数列,重复元素离散化后的数字不相同。
样例输入
6
1 23424 242 65466 242 0
样例输出
1 4 2 5 3 0
代码:
#include <bits/stdc++.h>
using namespace std;
struct node{
int num,id;
};
bool cmp( node a,node b ){
return a.num<b.num;
}
int main(){
int n;
cin>>n;
node *arr = new node[n+1];
for (int i = 0; i < n; i++){
cin>>arr[i].num;
arr[i].id=i;
}
sort(arr,arr+n,cmp);
for (int i = 0; i < n; i++){
arr[arr[i].id].num=i;
}
for (int i = 0; i < n; i++){
cout<<arr[i].num<<" ";
}
}