トピックリンク:http://acm.hdu.edu.cn/showproblem.php?pid=1862
問題解決のアイデア:ソート構造
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 構造体の学生{ int型がありません。 文字列の名前。 int型グレード; } STU [ 100005 ]。 ブールCMP1(学生S1、S2学生){ リターン s1.no < s2.no。 } ブールCMP2(学生S1、学生S2){ 場合(s1.name < s2.name){ 戻り 真。 } そう であれば(s1.name == s2.name){ リターン s1.no < s2.no。 } リターン 偽; } ブールCMP3(学生S1、学生S2){ 場合(s1.grade < s2.grade){ 戻り 真。 } そう であれば(s1.grade == s2.grade){ リターン s1.no < s2.no。 } を返す 偽。 } int型のmain(){ int型 N、C、CAS = 1 。 一方、(CIN >> N >> C、N){ ため(INT iは= 0 ; I <N I ++ ){ CIN>> STU [I] .NO >> STU [I] .nameの>> STU [I] .grade。 } もし(C == 1 ){ ソート(STU、STU + N、CMP1)。 } そう なら(C == 2 ){ ソート(STU、STU + N、CMP2)。 } そう なら(C == 3 ){ ソート(STU、STU + N、CMP3)。 } のprintf(" ケース%のD:\ n "、CAS ++ )。 以下のために(INT iが= 0、I <N; I ++){ のprintf(" %S%D%06D \ N- " 、STU [I] .NO、STU [I] .name.c_str()、STU [I] .grade); // .c_str()に変換する文字列チャーに[] } } 戻り 0 ; }