1 /* 2 水题:开个结构体,rk记录排名,相同的值有相同的排名 3 */ 4 #include <cstdio> 5 #include <cstring> 6 #include <algorithm> 7 #include <cmath> 8 #include <string> 9 #include <iostream> 10 #include <queue> 11 #include <map> 12 #include <vector> 13 using namespace std; 14 15 const int MAXN = 2e3 + 10; 16 const int INF = 0x3f3f3f3f; 17 struct A 18 { 19 int v, id, rk; 20 }a[MAXN]; 21 22 bool cmp_v(A x, A y) {return x.v > y.v;} 23 24 bool cmp_id(A x, A y) {return x.id < y.id;} 25 26 int main(void) //Codeforces Round #307 (Div. 2) A. GukiZ and Contest 27 { 28 // freopen ("A.in", "r", stdin); 29 30 int n; 31 while (scanf ("%d", &n) == 1) 32 { 33 for (int i=1; i<=n; ++i) 34 { 35 scanf ("%d", &a[i].v); a[i].id = i; 36 } 37 sort (a+1, a+1+n, cmp_v); 38 39 int cnt = 1; a[0].v = a[1].v; a[0].rk = 1; 40 for (int i=1; i<=n; ++i) 41 { 42 if (a[i].v < a[i-1].v) 43 { 44 a[i].rk = cnt++; 45 } 46 else 47 { 48 a[i].rk = a[i-1].rk; cnt++; 49 } 50 } 51 sort (a+1, a+1+n, cmp_id); 52 for (int i=1; i<=n; ++i) 53 { 54 printf ("%d%c", a[i].rk, (i==n) ? '\n' : ' '); 55 } 56 } 57 58 return 0; 59 }