离散化处理
题目描述:
在程序设计过程中,经常要用到离散化处理,将原始数据排序,使用排序后的编号(rank值)作为新的关键字进行操作。排序时相同的值只保留一个,也就是说所有键值相同的数离散化处理后对应同一个编号。
输入格式:
第1行:一个整数N。
第2行:有N个整数,每个数在10^9以内。
输出格式:
依次输出每个数的rank编号。
样例输入:
4 28 5 6 5
样例输出:
3 1 2 1
提示:
1<=N<=10000。
注意:可能有相同整数。
时间限制:1000ms
空间限制:128MB
来源:原创
#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int n,a[1000000],b[1000000],m; int main() { cin>>n; for(int i=0;i<n;i++) cin>>a[i],b[i]=a[i]; sort(a,a+n); m=unique(a,a+n)-a; for(int i=0;i<n;i++) cout<<lower_bound(a,a+m,b[i])-a+1<<" "; cout<<endl; return 0; }
by bigod ljc
时间: 2024-10-11 14:49:49