1085 PAT单位排行 (25 分
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                1085 PAT单位排行 (25 分
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                每次 PAT 考試結束后,考試中心都會發布一個考生單位排行榜。本題就請你實現這個功能。
輸入格式:
輸入第一行給出一個正整數 N(≤),即考生人數。隨后 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<iostream> #include<vector> #include<map> #include<algorithm> using namespace std;struct School{string name;double grade ;int stuNum; };bool cmp(School a,School b){if(a.grade != b.grade) return a.grade > b.grade;else if(a.stuNum != b.stuNum)return a.stuNum < b.stuNum;else return a.name < b.name; }int main(){int n,cnt = 1;vector<School> ans,sch;map<string,int> idx;cin >> n;string stu,school;double score;for(int i = 0; i < n; i++){getchar();cin >> stu >> score >> school;for(int j = 0; j < school.size(); j++){if(school[j] >= 'A' && school[j] <= 'Z')school[j] = (school[j] - 'A' + 'a');}if(idx.count(school) == 0){idx[school] = cnt++;School q;q.name = school;q.grade = 0;q.stuNum = 0;sch.push_back(q);}if(stu[0] == 'B') score /= 1.5;if(stu[0] == 'T') score *= 1.5;sch[idx[school] - 1].grade += score;sch[idx[school] - 1].stuNum++;}for(int i = 0; i < sch.size(); i++){sch[i].grade = (int)sch[i].grade;}sort(sch.begin(),sch.end(),cmp);int rank = 1;cout << sch.size() << endl;cout << rank << " "<< sch[0].name << " " << sch[0].grade << " " << sch[0].stuNum << endl;for(int i = 1; i < sch.size(); i++){if(sch[i].grade != sch[i - 1].grade) rank = i + 1;cout << rank << " " << sch[i].name << " "<< sch[i].grade << " "<< sch[i].stuNum << endl;}return 0; }?
轉載于:https://www.cnblogs.com/wanghao-boke/p/10427713.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的1085 PAT单位排行 (25 分的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 成都欢乐谷忘带身份证怎么进去
- 下一篇: 女性不孕有何表现症状
