#include<stdio.h> #include <algorithm> #include <stdlib.h> #include <map> #include <string.h> using namespace std; int main(){ int n,*arr,*arr2; map<int,int> mymap; while(scanf("%d",&n) != EOF){ arr =(int*)malloc(sizeof(int)*n); arr2 = (int*)malloc(sizeof(int)*n); for(int i=0;i<n;i++){ scanf("%d",&arr[i]); arr2[i] = arr[i]; } sort(arr2,arr2+n); int index = 0; for(int i=0; i<n; i++){ mymap.insert(pair<int,int>(arr2[i],index)); //插入数字和对应的 排名 index ++; if( i!=0 && arr2[i]==arr2[i-1]) index --; } for(int i=0; i<n; i++){ if(i==0) printf("%d",mymap.find(arr[i])->second+1); else printf(" %d",mymap.find(arr[i])->second+1); } printf("\n"); } return 0; } /************************************************************** Problem: 2218 User: admin Language: C++ Result: Accepted Time:8 ms Memory:1212 kb ****************************************************************/