このよう98,97,97,96と、同じランクの同じ割合について注意1,2,2,4-位にランク
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 #define MAXN 100005 構造体の学生 { 文字列名。 int型のC、M、E、RA、RC、RM、再。 二重の平均; } STU [MAXN]。チャー C [] = { ' A '、' C '、' M '、' E ' }。 ブールACMP(生徒A、生徒B) { リターン > a.avg b.avg。 } BOOL CCMP(生徒A、生徒B) { リターン 交流> BC; } BOOL MCMP(生徒A、生徒B) { 戻り AM> BM。 } BOOL ECMP(生徒A、生徒B)は 、{ 戻る AE> です。 } マップ < 文字列、整数 > VIS、MA、MB。 INTのN、M。 INT メイン() { vis.clear()。 CIN >> N >> M。 以下のために(int型 i = 0 ; iがn <I ++の) { CIN >> STU [I] .nameの>> STU [I] .C >> STU [I] .M >> STUを[I] .E。 STU [I] .avgを=(ダブル)(この[I] .C +この[I] + H、この[I] .E)/ 3.0 。 来[この[I] .nameの] = 1 。 } ソート(これは、この + N、ACMP)。 int型のp = 1 ; この[ 0 ] .RA = 1 。 以下のために(int型 i = 1 ; iがn <Iは、++は) { 場合(この[I] == .avgこの[I- 1 ] .avg) この[ザ] .RA = P。 そうでなければ { P = I + 1 ; この[ザ] .RA =P; } } ソート(STU、STU + N、CCMP)。 P = 1 。 STU [ 0 ] .RC = 1 。 以下のために(int型 i = 1 ; iがn <Iは、++は) { 場合(STU [I] .C == STU [I- 1 ] .C) STU [i]は.RC = P。 他 { pは =私+ 1 ; STU [I] .RC = P。 } } ソート(STU、STU + N、MCMP)。 P= 1 ; STU [ 0 ] .rmの= 1 。 以下のために(int型 i = 1 ; iがn <I ++の) { 場合(STU [I] .M == STU [I- 1 ] .M) STU [i]は.rmの = Pと、 他 { pは =私+ 1 ; STU [i]は.rmの = P。 } } ソート(STU、STU + N、ECMP)。 P = 1 。 STU [ 0 ] .RE = 1 。 以下のために(int型 i = 1 ; iがn <Iは、++は) { 場合(STU [I] .E == STU [I- 1 ] .E) STU [I] .RE = P。 他 { pは =私+ 1 ; STU [I] .RE = P。 } } int型ミネソタ州、CRS、ANS。 以下のために(int型 i = 0 ; iがn <; iは++ ) { ミネソタ州 = N + 1 。 もし(STU [I] .RA < ミネソタ州) { ANS = STU [I] .RA。 A = STU [I] .RA。 CRS = 0 ; } オウ(STU [I] .RC < A) { ANS = STU [I] .RC。= STU [I] .RC。 CRS = 1 。 } オウ(STU [i]が.rmの< A) { ANS = STU [i]は.rmという。= STU [i]は.rmという。 CRS = 2 。 } オウ(STU [I] .RE <ミネソタ州) { ANS = STU [I] .RE。 ミネソタ州 = STU [I] .RE。 CRS = 3 。 } MA [STU [I] .nameの] =のANS。 MB [STU [I] .nameの] =のCRS。 } ストリングS。 一方、(M-- ) { CIN >> S。 もし(VIS [S] == 1 ) COUT << MA [S] << " " << C [MB [S] << ENDL。 他の 裁判所未満 << " "N / A<< てendl; } }