1. 程式人生 > 實用技巧 >離散化模板題 II ——重複元素離散化後的數字不相同

離散化模板題 II ——重複元素離散化後的數字不相同

離散化模板題 II ——重複元素離散化後的數字不相同

題目描述

現有數列A1,A2,,An,數列中可能有重複元素。
現在要求輸出該數列的離散化數列,重複元素離散化後的數字不相同。

輸入

第一行,一個整數n
第二行,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<<" "; } }