1085 pat單位排行 (25分)
每次 pat 考試結束後,考試中心都會發布乙個考生單位排行榜。本題就請你實現這個功能。
輸入格式:
輸入第一行給出乙個正整數 n(≤10^5),即考生人數。隨後 n 行,每行按下列格式給出乙個考生的資訊:
准考證號 得分 學校
其中准考證號是由 6 個字元組成的字串,其首字母表示考試的級別:b代表乙級,a代表甲級,t代表頂級;得分是 [0, 100] 區間內的整數;學校是由不超過 6 個英文本母組成的單位碼(大小寫無關)。注意:題目保證每個考生的准考證號是不同的。
輸出格式:
首先在一行中輸出單位個數。隨後按以下格式非降序輸出單位的排行榜:
排名 學校 加權總分 考生人數
其中排名是該單位的排名(從 1 開始);學校是全部按小寫字母輸出的單位碼;加權總分定義為乙級總分/1.5 + 甲級總分 + 頂級總分*1.5的整數部分;考生人數是該屬於單位的考生的總人數。
學校首先按加權總分排行。如有並列,則應對應相同的排名,並按考生人數公升序輸出。如果仍然並列,則按單位碼的字典序輸出。
輸入樣例:
10a57908 85 au
b57908 54 lanx
a37487 60 au
t28374 67 cmu
t32486 24 hypu
a66734 92 cmu
b76378 71 au
a47780 45 lanx
a72809 100 pku
a03274 45 hypu
輸出樣例:
51 cmu 192 2
1 au 192 3
3 pku 100 1
4 hypu 81 2
4 lanx 81 2
#include
#include
#include
#include
#include
#include
using
namespace std;
struct sch
;bool
cmp(sch s1, sch s2)
else
if(s1.count != s2.count)
else
}int
main()
if(gmap.
count
(school)==0
)else
if(id[0]
=='a'
)else
if(id[0]
=='t'
) s.count =1;
gmap[school]
= s;
}else
else
if(id[0]
=='a'
)else
if(id[0]
=='t'
) s.count++;}
}for
(auto
&x : gmap)
printf
("%d\n"
, schcount)
;sort
(schs.
begin()
, schs.
end(
), cmp)
;int j =
0, pres =-1
, rank =0;
for(
int i =
0; i < schs.
size()
; i++
) pres =
(int
)schs[i]
.grade;
printf
("%d %s %d %d\n"
, rank, schs[i]
.name.
c_str()
,(int)schs[i]
.grade, schs[i]
.count);}
return0;
}
PAT乙級1032 C 龍哥哥的刷題路
1032 挖掘機技術哪家強 20分 為了用事實說明挖掘機技術到底哪家強,pat 組織了一場挖掘機技能大賽。現請你根據比賽結果統計出技術最強的那個學校。輸入格式 輸入在第 1 行給出不超過 10 5的正整數 n,即參賽人數。隨後 n 行,每行給出一位參賽者的資訊和成績,包括其所代表的學校的編號 從 1...
PAT乙級1038 C 龍哥哥的刷題路
1038 統計同成績學生 20分 本題要求讀入 n 名學生的成績,將獲得某一給定分數的學生人數輸出。輸入格式 輸入在第 1 行給出不超過 10 5的正整數 n,即學生總人數。隨後一行給出 n 名學生的百分制整數成績,中間以空格分隔。最後一行給出要查詢的分數個數 k 不超過 n 的正整數 隨後是 k ...
PAT乙級1042 C 龍哥哥的刷題路
1042 字元統計 20分 請編寫程式,找出一段給定文字 現最頻繁的那個英文本母。輸入格式 輸入在一行中給出乙個長度不超過 1000 的字串。字串由 ascii 碼表中任意可見字元及空格組成,至少包含 1 個英文本母,以回車結束 回車不算在內 輸出格式 在一行中輸出出現頻率最高的那個英文本母及其出現...