PAT 最佳排名

最佳排名

#include 
#include 
#include 
#include 
#include using namespace std;unordered_map<string, vector<int>> grades;//明白hashmap的用法表示映射的相对关系,一个id
//映射到那个同学的三科成绩
vector <int> q[4];//本质是个可以看作是个二维数组但是vector是个容器
//q[0]:A q[1]:C q[2]:M q[3]: Eint get_rank(vector<int>& a , int x)//二分找到第一个下表为x的数
{//但是该数组是一个递增的数组所以要找最右边的第一个数字int l = 0, r = a.size() - 1;//vector的函数while(l < r){int mid = l + r + 1 >> 1;//l = mid 为了防止死循环所以这里要加1if(a[mid] <= x) l = mid;elser = mid - 1;}return a.size() - r;}int  main()
{int n, m;cin >> n >> m;for(int i = 0; i < n; i ++ ){string id;int t[4] = {0};cin >> id;for(int j = 1; j < 4; j ++ ){cin >> t[j];t[0] += t[j];}t[0] = round(t[0] / 3.0);//round函数是math库中的除数for(int j = 0; j < 4; j ++ ){q[j].push_back(t[j]);//加到vector容器中grades[id].push_back(t[j]);}}for(int i = 0; i < 4; i ++ )sort(q[i].begin(),q[i].end());char names[] = "ACME";while(m -- ){string id;cin >> id;if(grades.count(id) == 0) puts("N/A");//哈希表用法else{int res = n + 1;char c;for(int i = 0; i < 4; i ++ ){int rank = get_rank(q[i], grades[id][i]);if(rank < res){res = rank;//四门课选分最高的输出c = names[i];}}cout << res << ' ' << c << endl;}}return 0;}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部