- 浏览: 36649 次
- 性别:
- 来自: 杭州
最新评论
四门功课,输出排名最高的是哪个
Sample Input
5 6 310101 98 85 88 310102 70 95 88 310103 82 87 94 310104 91 91 91 310105 85 90 90 310101 310102 310103 310104 310105 999999Sample Output
1 C 1 M 1 E 1 A 3 A N/A
代码比较冗余。
#include <iostream> #include <string> #include <vector> #include <iomanip> #include <map> #include <algorithm> using namespace std; class STUDENT { public: string id; int c_score; int m_score; int e_score; int a_score; int c_rank; int m_rank; int e_rank; int a_rank; int best_rank; string best_course; STUDENT() { c_score = 0; m_score = 0; e_score = 0; a_score = 0; c_rank = 0; m_rank = 0; e_rank = 0; a_rank = 0; best_rank = 0; } int GetScore(int course); void SetRank(int course, int rank); }; int STUDENT::GetScore(int course) { switch(course) { case 1: return c_score; case 2: return m_score; case 3: return e_score; case 4: return a_score; default: return 0; } } void STUDENT::SetRank(int course, int rank) { switch(course) { case 1: c_rank = rank; return; case 2: m_rank = rank; return; case 3: e_rank = rank; return; case 4: a_rank = rank; return; default: return; } } bool greate_c_score(const STUDENT& s1,const STUDENT& s2) { return s1.c_score > s2.c_score; } bool greate_m_score(const STUDENT& s1,const STUDENT& s2) { return s1.m_score > s2.m_score; } bool greate_e_score(const STUDENT& s1,const STUDENT& s2) { return s1.e_score > s2.e_score; } bool greate_a_score(const STUDENT& s1,const STUDENT& s2) { return s1.a_score > s2.a_score; } void FunRank(vector<STUDENT> &VStu, int course) { int forword = -1; int irank = 0; int realrank = 0; vector<STUDENT>::iterator iter1 = VStu.begin(); while(iter1 != VStu.end()) { ++realrank; if (forword != (*iter1).GetScore(course)) { irank = realrank; (*iter1).SetRank(course,realrank); forword = (*iter1).GetScore(course); } else { (*iter1).SetRank(course,irank); } iter1++; } } int main() { int N,M; cin>>N>>M; map<string,STUDENT> StuMap; vector<STUDENT> VStu; vector<string> VStuid; while(N--) { STUDENT stu; cin>>stu.id>>stu.c_score>>stu.m_score>>stu.e_score; stu.a_score = (stu.c_score + stu.m_score + stu.e_score)/3; VStu.push_back(stu); } sort(VStu.begin(), VStu.end(), greate_c_score); FunRank(VStu,1); sort(VStu.begin(), VStu.end(), greate_m_score); FunRank(VStu,2); sort(VStu.begin(), VStu.end(), greate_e_score); FunRank(VStu,3); sort(VStu.begin(), VStu.end(), greate_a_score); FunRank(VStu,4); vector<STUDENT>::iterator iter = VStu.begin(); while(iter != VStu.end()) { if ((*iter).e_rank < (*iter).m_rank) { (*iter).best_rank = (*iter).e_rank; (*iter).best_course = "E"; } else { (*iter).best_rank = (*iter).m_rank; (*iter).best_course = "M"; } if ((*iter).best_rank >= (*iter).c_rank) { (*iter).best_rank = (*iter).c_rank; (*iter).best_course = "C"; } if ((*iter).best_rank >= (*iter).a_rank) { (*iter).best_rank = (*iter).a_rank; (*iter).best_course = "A"; } StuMap[(*iter).id] = *iter; iter++; } while(M--) { string str; cin>>str; VStuid.push_back(str); } for (int i = 0; i < VStuid.size(); i++) { map<string,STUDENT>::iterator iter = StuMap.find(VStuid[i]); if (iter != StuMap.end()) { cout<<(iter->second).best_rank<<" "<<(iter->second).best_course<<endl; } else { cout<<"N/A"<<endl; } } return 0; }
发表评论
-
PAT1013 Battle Over Cities
2012-11-29 23:59 773Sample Input 3 2 3 1 2 1 3 ... -
PAT1003 Emergency
2012-11-29 23:46 662Sample Input 5 6 0 2 1 2 1 ... -
PAT1041 Be Unique
2012-11-23 23:43 760找出只出现过一次的数,用各种排序必然超时,需要用数组做hash ... -
PAT1042 Shuffling Machine
2012-11-23 23:42 733扑克洗牌 #include < ... -
PAT1040 Longest Symmetric String
2012-11-23 23:41 959求最长回文子串 #include < ... -
PAT1036 Boys vs Girls
2012-11-23 23:41 716Sample Input 1: 3 Joe M Mat ... -
PAT1035 Password
2012-11-23 23:40 616Sample Input 1: 3 Team0000 ... -
PAT1031 Hello World for U
2012-11-22 23:54 655Sample Input: helloworld! S ... -
PAT1029 Median
2012-11-22 23:54 651用标准库的排序全部超时,需要自己实现,另外还不能用cin co ... -
PAT1028 List Sorting
2012-11-22 23:53 808用vector最后一个用例超时了。。。 Sample ... -
PAT1027 Colors in Mars
2012-11-22 23:52 623Sample Input 15 43 71 Samp ... -
PAT1025 PAT Ranking
2012-11-22 23:51 772Sample Input: 2 5 123456789 ... -
PAT1023 Have Fun with Numbers
2012-11-21 23:55 687大数的相加 比较两个字符串中字符完全相同 Sa ... -
PAT1020 Tree Traversals
2012-11-21 23:54 652已知中序遍历 后序遍历,求层次遍历 Sample In ... -
PAT1019 General Palindromic Number
2012-11-21 23:53 537十进制转任意进制,并比较是否是回文数 Sample I ... -
PAT1037 Magic Coupon
2012-11-21 15:46 663Sample Input: 4 1 2 4 -1 ... -
PAT1038 Recover the Smallest Number
2012-11-20 23:52 1668由一道面试题改的 把数组排成最小的数 不同之处是这 ... -
PAT1024 Palindromic Number
2012-11-20 23:51 648Sample Input 1: 67 3 Sampl ... -
PAT1015 Reversible Primes
2012-11-19 23:51 771十进制转任意进制 假设十进制数为number,转 ... -
PAT1011 World Cup Betting
2012-11-19 23:50 534Sample Input 1.1 2.5 1.7 1.2 ...
相关推荐
The main idea is very simple - flair expects .pat file to produce .sig file with signatures. So I just add some logic to my .dcu files loader to generate .pat files in right format Supported Delphi ...
CAD填充图案(三百多种)-.pat文件 部分如下(篇幅有限) 2x12木地板.pat 45度人字形砖面(1).pat 8x8无缝砖.pat Z形砖.pat 丁字砖面1.pat 丁字砖面2.pat 三联蜂窝.pat 三角形拼铺.pat 不能通行的沼泽地.pat 乱沙.pat...
PAT历年真题参考代码PAT历年真题参考代码PAT历年真题参考代码
浙大pat1002 C++代码
为PAT考试作宣传用,希望广大的师生们,积极踊跃的参加
我的PAT乙级练习题1001代码记录,题目地址:https://www.patest.cn/contests/pat-b-practise/1001
浙大 机试 PAT 参考书 C++ /C语言编写
PAT甲级优秀辅导资料
patb工程文件的说明文档,对patb工程文件的说明。adj、image、ori、cont。
PAT甲级题目目录,按照一定规律分类,题目从新到旧1112 Stucked Keyboard (20 分)【将键盘坏损的地方修复】 1108 Finding Average (20 分)【读入有效的数字并处理输出无效的数字】 1100 Mars Numbers (20 ...
PAT题解
photosh素材pat文件,
DSM_DS3622xs+_42951.pat
pat.zju.edu.cn上面的大部分代码,基本上都是我自己写的,不过初期的...PAT (Advanced Level) Practise题组基本80个全了 PAT (Basic Level) Practise (中文)20个全了 《数据结构学习与实验指导》实验项目集也做了20个
The Process Analysis Toolkit (PAT) is a CSP analysis tool developed in the School of Computing at the National University of Singapore. PAT is able to perform refinement checking, LTL model-...
Pat试题答案,题号从1001到1049,有需要的同学可以用来参考
dait_pat1_pat1dait_pat1_pat1dait_pat1_pat1dait_pat1_pat1
【PAT-B1012】数字分类——c++满分题解(csdn)————程序
PAT乙级题解.pdf
PAT甲级第1011题,之前自己做的时候写的代码,正确通过,但是效率不保证