<ビット/ STDC ++ H>の#include の#include <math.h>の 使用 名前空間STDを、 const int型 MAX_LEN = 2005 ; // constのint型MAX_D = 31; 構造体の学生{ int型のID。 int型Cgrade; int型Mgrade; int型Egrade; int型Agrade; }成長[MAX_LEN]。 int型のmain(){ int型のn、mは、 scanf関数(" %D%D "、&N、&M)。 INT TEMP [M]。 以下のために(INT iが= 0 ; I <N; ++ i)が{ scanf関数(" %のD "、&STU [I] .ID)。 scanf関数(" %のD "、および[I] .Cgrade STU)。 scanf関数(" %のD "、および[I] .Mgrade STU)。 scanf関数(" %のD "、および[I] .Egrade STU)。 この[] .Agrade =(この[I] + .Cgradeこの[I] + .Mgradeこの[] .Egrade)/ 3 。 } 用(int型 iは= 0 ; I <M ++ {i)は scanf関数(" %のD "、&TEMP [I])。 } int型の結果= 0 ; int型のカウント= 1 ; int型の数字= 0 ; ブールフラグ= 偽。 以下のために(INT iが= 0 ; I <M; ++ I){ ため(INT J = 0 ; nはJ <; ++ J){ 場合(TEMP [I] == STU [J] .ID){ 桁 = J; フラグ = 真。 } } もし(フラグ== 偽){ printf(" N / A \ n " ); 続け; } 他に{ 場合(STU [数字] .Cgrade!= STU [桁] .Mgrade && STU [桁] .Mgrade!= STU [桁] .Egrade){ 結果 = MAX(STU [桁] .Cgrade、MAX(STU [桁] .Egrade、STU [桁] .Mgrade))。 もし(結果== STU [桁] .Cgrade){ ための(int型のk = 0 ; K <N; ++ K){ 場合(STU [K] .Cgrade> 結果){ カウント ++ ; } } printf(" %d個のC \ n " 、カウント)。 カウント = 1 ; フラグ = 偽; 続け; } もし(結果== STU [桁] .Egrade){ ための(int型のk = 0 ; K <N; ++ K){ 場合(STU [K] .Egrade> 結果){ カウント ++ ; } } printf(" %d個のE \ N " 、カウント数)。 カウント = 1 ; フラグ = 偽; 続け; } もし(結果== STU [桁] .Mgrade){ ための(int型のk = 0 ; K <N; ++ K){ 場合(STU [K] .Mgrade> 結果){ カウント ++ ; } } printf(" %dのM \ N " 、カウント数)。 カウント = 1 ; フラグ = 偽; 続け; } } 他{ 結果 = STU [桁] .Agrade。 用(int型のk = 0 ; K <N; ++ K){ 場合(STU [K] .Agrade> 結果){ カウント ++ ; } } printf(" %d個のA \ N " 、カウント数)。 カウント = 1 ; フラグ = 偽; 続け; } } } システム(「一時停止」)。 リターン 0 ; }