水题 Codeforces Round #307 (Div. 2) A. GukiZ and Contest

 

题目传送门

 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 }

 

你可能感兴趣的:(codeforces)