PAT乙級 PAT單位排行 (結構體排序)

2021-09-10 16:25:15 字數 1827 閱讀 3333

每次 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

易錯點:有個學校它的成績是 0 分。(第二個測試點)

先將成績換為整數,再進行排序(否則第五個過不了)

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

struct mystruct //結構體

;bool cmp(mystruct a, mystruct b) //結構體排序方法

int main()

if (certicify[0] == 'b')

score = score / 1.5;

else if (certicify[0] == 't')

score =score*1.5;

sum[school]++;

schscor[school] += score;

} vectorres;

for (auto it = sum.begin(); it != sum.end(); it++)

); }

sort(res.begin(), res.end(),cmp);

cout << (int)res.size() << endl;

int qian = -1;

int rank = 0;

for (int i = 0; i < res.size(); i++)

}

柳婼

dup4

PAT乙級 1085單位排行

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

PAT乙級 1085 PAT單位排行 25

整數部分 考生人數 是該屬於單位的考生的總人數。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 ...

PAT乙級 1085 PAT單位排行 25分

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