c++ 成绩统计

Q:

有一个二维表格数据,它的值全部是整数,其中存储了若干个选手参与5分钟汉字输入比赛的成绩。数据中每一行是一条记录,每条记录包含两个整数,第1个整数为选手编号,它应该是一个4位整数;第2个整数是汉字输入比赛成绩,应该是一个小于等于1000的非负整数。数据中每个选手最多可能有2条记录。编写程序删除数据中的无效记录和每个选手的多余记录,每个选手只保留有效成绩中成绩最高的一条记录,然后返回成绩排名第2的选手编号(当成绩相同时编号小的选手在前),如果不足2个选手,则返回第1的选手编号。注意: 测试数据保证按照 要求删除数据后,至少有一条记录。

|------|--------------------------------------------------------|
| 相关说明 ||
| 输入条件 | 1. 输入的二维表格数据中的数据一定全部是整数, 1. 二维表格数据中每一行一定是两个整数 |
| 输出要求 | 1. 输出选手的编号一定是一个4位整数 |
| 其它要求 | 将代码写入函数func4 |

测试用例:

|---------------------------------------------------|------|
| 输入 | 返回 |
| [[1,2] ,[1022,888]] | 1022 |
| [[1,2],[1022,888],[1011,888]] | 1022 |
| [[1,2],[1011,888],[1011,800]] | 1011 |
| [[1,2],[1011,888],[1011,800],[1025,45]] | 1025 |

cpp 复制代码
#include <bits/stdc++.h>
#include <cstring>
using namespace std;

//=================================================
// 说明:编程题4
// 参数说明: vector<vector<int> >& records: 二维整型向量,每一行表示一条记录
// 返回值: 返回成绩排名第2的选手编号(当成绩相同时编号小的选手在前)
//=================================================
int cmp(pair<int,int> p1,pair<int,int> p2){
    if (p1.second == p2.second)return p1.first<=p2.first;
    return p1.second>=p2.second;

}
int func4(vector<vector<int> >& records)
{
    unordered_map<int,int> valid_records;

    for (auto r : records){
        int id = r[0];
        int score = r[1];
        if (score>=0 && score<=1000){
            if (valid_records.find(id)!= valid_records.end())valid_records[id] = max(score,valid_records[id]);
            else valid_records[id] = score;
        }
    }
    vector<pair<int,int>> result;
    for (auto vr : valid_records)result.push_back(make_pair(vr.first,vr.second));

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

    if (result.size()>1)cout<<result[1].first;
    else cout<<result[1].first;


}
int main(){
    vector<vector<int> > records;

    records.push_back({1,2});
    records.push_back({1011,800});
    records.push_back({1015,888});
    records.push_back({1011,888});

    records.push_back({1025,45});
    func4(records);

}
相关推荐
不想写代码的星星4 分钟前
类型萃取:重生之我在幼儿园修炼类型学
开发语言·c++
郝学胜-神的一滴10 分钟前
中级OpenGL教程 001:从Main函数到相机操控的完整实现
c++·程序人生·unity·图形渲染·unreal engine·opengl
charlie11451419122 分钟前
嵌入式现代C++教程实战篇第12篇:C宏时代的LED驱动 —— 能跑但不优雅
c语言·c++·stm32·单片机·嵌入式硬件·c
wunaiqiezixin29 分钟前
链表多项式大整数-BigInt
数据结构·c++·链表
kyle~35 分钟前
BFS(广度优先搜索)与 DFS (深度优先搜索)
c++·算法·深度优先·宽度优先
汉克老师38 分钟前
GESP2024年3月认证C++三级( 第二部分判断题(1-10))
c++·位运算·string·gesp三级·gesp3级
kyle~1 小时前
FANUC机械臂---PR位置寄存器(Position Register)
c++·机器人·fanuc
John.Lewis1 小时前
C++加餐课-继承和多态:扩展学习
开发语言·c++·笔记
泽02021 小时前
LLMChat ----- 通过C++语言调用大语言模型所实现的聊天系统
开发语言·c++·语言模型
steem_ding1 小时前
C++ 回调函数详解
开发语言·c++·算法