PAT B 1085 PAT單位排行 (25 分)

2021-09-10 01:50:20 字數 1716 閱讀 3202

解題點:1.用結構體來儲存各個學校的三項成績,參賽人員等全部資訊。

2.用map來儲存 學校名稱,與學校資訊 的鍵值對

3.將map中的資訊儲存自定義的資料結構陣列中,用sort函式進行排序,最後輸出;

每次 pat 考試結束後,考試中心都會發布乙個考生單位排行榜。本題就請你實現這個功能。

輸入第一行給出乙個正整數 n(≤10​5​​),即考生人數。隨後 n 行,每行按下列格式給出乙個考生的資訊:

准考證號 得分 學校
其中准考證號是由 6 個字元組成的字串,其首字母表示考試的級別:b代表乙級,a代表甲級,t代表頂級;得分是 [0, 100] 區間內的整數;學校是由不超過 6 個英文本母組成的單位碼(大小寫無關)。注意:題目保證每個考生的准考證號是不同的。

首先在一行中輸出單位個數。隨後按以下格式非降序輸出單位的排行榜:

排名 學校 加權總分 考生人數
其中排名是該單位的排名(從 1 開始);學校是全部按小寫字母輸出的單位碼;加權總分定義為乙級總分/1.5 + 甲級總分 + 頂級總分*1.5整數部分考生人數是該屬於單位的考生的總人數。

學校首先按加權總分排行。如有並列,則應對應相同的排名,並按考生人數公升序輸出。如果仍然並列,則按單位碼的字典序輸出。

10

a57908 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

5

1 cmu 192 2

1 au 192 3

3 pku 100 1

4 hypu 81 2

4 lanx 81 2

#include #include #include #include using namespace std;

struct info

};struct ranks;

bool cmp(ranks a,ranks b)

int schoolsize=mp.size();

ranks finals[schoolsize];

map::iterator it;

int i=0;

for(it=mp.begin();it!=mp.end();it++,i++)

sort(finals,finals+schoolsize,cmp);

int rrank=1;

int fin=finals[0].ii.finalscore;

cout

return 0;

}

PAT B1085 PAT單位排行 (25 分)

每次 pat 考試結束後,考試中心都會發布乙個考生單位排行榜。本題就請你實現這個功能。輸入第一行給出乙個正整數 n 10 5 即考生人數。隨後 n 行,每行按下列格式給出乙個考生的資訊 准考證號 得分 學校其中准考證號是由 6 個字元組成的字串,其首字母表示考試的級別 b代表乙級,a代表甲級,t代表...

PAT 1085 PAT單位排行

每次 pat 考試結束後,考試中心都會發布乙個考生單位排行榜。本題就請你實現這個功能。輸入格式 輸入第一行給出乙個正整數 n 10 5 即考生人數。隨後 n 行,每行按下列格式給出乙個考生的資訊 准考證號 得分 學校 其中准考證號是由 6 個字元組成的字串,其首字母表示考試的級別 b代表乙級,a代表...

1085 PAT單位排行

每次 pat 考試結束後,考試中心都會發布乙個考生單位排行榜。本題就請你實現這個功能。輸入第一行給出乙個正整數 n 10 5 即考生人數。隨後 n 行,每行按下列格式給出乙個考生的資訊 准考證號 得分 學校其中准考證號是由 6 個字元組成的字串,其首字母表示考試的級別 b代表乙級,a代表甲級,t代表...