トラブルのグループ!!!幸いなことに、被験者は、比較的簡単な交換unordered_mapに出力タイムアウトに必要に応じて、。
新しいガジェットのSTL-ペアに学び、それが構造として理解することができます。
構造体ペア{ 最初typename1。 typename2二; }。
用途:
1.体とその二重構造は、コーディングの時間を節約するために、コンストラクタの代わりに使用することができます。同様B1085 PATユニットがランクイン。
2.マップとして使用することができるキー挿入します。
1つの#include " のiostream " 2の#include " アルゴリズム" 3の#include " ベクター" 4の#include " unordered_map " 5 使って 名前空間STDを、 6 7 構造体学生{ 8 文字列ID。 9 int型グレード。 10 } STU [ 10010 ]。 11 12 ブールCMP1(生徒、生徒B){ 13 であれば(a.grade!= b.grade)リターンa.grade> b.grade。 14 他の リターン a.id < b.id。 15 } 16 17 ブール CMP2(対< 文字列、整数 >対< 文字列、整数 > B){ 18 であれば(a.second = b.second!)戻り a.second> b.second。 19 他の リターン a.first < b.first。 20 } 21 22 int型のmain(){ 23 INT N、M。 24 のscanf(" %D%D "、&N、&M)。 25 のために(INTは iは= 0 ; I <N ++ {I) 26 GETCHAR()。 27 CIN >> STU [i]の.ID。 28 のscanf(" %dの"、&STU [I] .grade)。 29 } 30 のint 型。 31 文字列イン。 32 のために(INT iは= 1 ; iが<= M; ++ I){ 33 のscanf(" %dの"、&タイプ); 34 GETCHAR()。 35 cinを>> イン。 36 のprintf(" ケース%のD:%のD " 、I、タイプ)。 37 COUT <<イン<< ENDL。 38 であれば(タイプ== 1 ){ 39 ソート(STU、STU + N、CMP1)。 40 ブールフラグ= 偽。 41 のために(INT J = 0 ; J <N; ++ j)は{ 42 であれば(INS [ 0 ] == STU [j]が.ID [ 0 ]){ 43 フラグ= 真。 44 coutの<< STU [J] .ID。 45 のprintf(" %D \ n " 、STU [J] .grade)。 46 } 47 } 48 であれば(フラグ== 偽)のprintf(" NA \ n " ); 49 } そう であれば(タイプ== 2 ){ 50 INT CNT = 0、スコア= 0 。 51 のために(INT J = 0 ; J <N; ++ j)は{ 52 もし(INS == STU [J] .id.substr(1、3は)){ 53である ++ CNT ; 54れる スコア+ = STU [J] .grade; 55 } 56である } 57が IF(CNT == 0)のprintf(" \ N- NA "); // 決意条件レースの数が 58 他の 59 のprintf(" %D%D \ N- ' 、CNT、スコア); 60 } 他{ 61は unordered_map < 文字列、整数> M、 62である ため(INT J = 0 ; J <N; ++ J){ 63は、 IF(INS == STU [J] .id.substr(4、6 )){ 64 M [STU [J] .ID .SUBSTR(1、3 ] ++); 65 } 66 } 67 IF(m.size()== 0)のprintf(" N- NA \ " ); 68 他{ 69 // キー値によって地図上に置きますキーと値のペアは、ベクターの構造に挿入される 70 ベクトル<ペア<文字列、int型 >> V(m.begin()、m.end()); 71 ソート(v.begin()、v.end()、CMP2)。 72 のために(INT J = 0 ; J <v.size(); ++ j)は{ 73 COUT << V [J] 1次回。 74 のprintf(" %dの\ n " 、V [J] .second)。 75 } 76 } 77 } 78 } 79 リターン 0 。 80 }