只保留数组之间的大小关系
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rg register
#define putln putchar('\n')
#define rep(i,a,b) for(rg int i=a;i<=b;++i)
#define per(i,a,b) for(rg int i=a;i>=b;--i)
const int MXN=1e5+5;
int n,b[MXN];//离散后的数组
struct node
{
int x;
int index;
}a[MXN];//原数组
bool cmp(const node&p,const node&q)
{
return p.x<q.x;
}
void lisan()
{
sort(a+1,a+n+1,cmp);
int cnt=1;
rep(i,1,n){
if(i!=1&&a[i].x!=a[i-1].x) cnt++;
b[a[i].index]=cnt;
}
}
int main()
{
scanf("%d",&n);
rep(i,1,n){
scanf("%d",&a[i].x);
a[i].index=i;
}
lisan();
rep(i,1,n) printf("%d ",b[i]);
putln;
return 0;
}