#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; int n,tot,a[1010],c[1010]; int main(){ cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) c[i]=a[i]; sort(c+1,c+n+1); tot=unique(c+1,c+n+1)-(c+1); for(int i=1;i<=n;i++) a[i]=lower_bound(c+1,c+tot+1,a[i])-c; for(int i=1;i<=n;i++) cout<<a[i]<<" "; cout<<endl; return 0; }
通过sort,unique,lower_bound实现,目的是在保证数据相对大小不变的条件下缩小数据(映射)。