PAT 准考证号由 4 部分组成:

  • 第 1 位是级别,即 T 代表顶级;A 代表甲级;B 代表乙级;
  • 第 2~4 位是考场编号,范围从 101 到 999;
  • 第 5~10 位是考试日期,格式为年、月、日顺次各占 2 位;
  • 最后 11~13 位是考生编号,范围从 000 到 999。

现给定一系列考生的准考证号和他们的成绩,请你按照要求输出各种统计信息。

输入格式:

输入首先在一行中给出两个正整数 N(≤10​4​​)和 M(≤100),分别为考生人数和统计要求的个数。

接下来 N 行,每行给出一个考生的准考证号和其分数(在区间 [0,100] 内的整数),其间以空格分隔。

考生信息之后,再给出 M 行,每行给出一个统计要求,格式为:类型 指令,其中

  • 类型 为 1 表示要求按分数非升序输出某个指定级别的考生的成绩,对应的 指令 则给出代表指定级别的字母;
  • 类型 为 2 表示要求将某指定考场的考生人数和总分统计输出,对应的 指令 则给出指定考场的编号;
  • 类型 为 3 表示要求将某指定日期的考生人数分考场统计输出,对应的 指令 则给出指定日期,格式与准考证上日期相同。

输出格式:

对每项统计要求,首先在一行中输出 Case #: 要求,其中 # 是该项要求的编号,从 1 开始;要求 即复制输入给出的要求。随后输出相应的统计结果:

  • 类型 为 1 的指令,输出格式与输入的考生信息格式相同,即 准考证号 成绩。对于分数并列的考生,按其准考证号的字典序递增输出(题目保证无重复准考证号);
  • 类型 为 2 的指令,按 人数 总分 的格式输出;
  • 类型 为 3 的指令,输出按人数非递增顺序,格式为 考场编号 总人数。若人数并列则按考场编号递增顺序输出。

如果查询结果为空,则输出 NA

输入样例:

8 4
B123180908127 99
B102180908003 86
A112180318002 98
T107150310127 62
A107180908108 100
T123180908010 78
B112160918035 88
A107180908021 98
1 A
2 107
3 180908
2 999

输出样例:

Case 1: 1 A
A107180908108 100
A107180908021 98
A112180318002 98
Case 2: 2 107
3 260
Case 3: 3 180908
107 2
123 2
102 1
Case 4: 2 999
NA
#include<iostream>
#include<unordered_map>
#include<vector>
#include<algorithm>
using namespace std;
struct node{string t;int value;
};
bool cmp(const node &a, const node &b){return a.value!=b.value ? a.value>b.value:a.t<b.t;
}
int main(){//freopen("input.txt","r",stdin);int n,m;cin>>n>>m;vector<node> v(n);for(int i=0;i<n;i++)cin>>v[i].t>>v[i].value;for(int i=1;i<=m;i++){int cnt,sum=0,num=0;string s;cin>>cnt>>s;printf("Case %d: %d %s\n",i,cnt,s.c_str());vector<node> ans;if(cnt==1){for(int j=0;j<n;j++)if(v[j].t.substr(0, 1) == s)ans.push_back(v[j]);}else if(cnt==2){for(int j=0;j<n;j++)if(v[j].t.substr(1, 3) == s){num++;sum+=v[j].value;}if(num!=0) printf("%d %d\n",num, sum);}else{unordered_map<string, int> m;for(int j=0;j<n;j++){if(v[j].t.substr(4,6) == s)m[v[j].t.substr(1,3)]++;}for(auto it : m)ans.push_back({it.first, it.second});}sort(ans.begin(), ans.end(), cmp);for(int j=0;j<ans.size();j++) printf("%s %d\n",ans[j].t.c_str(), ans[j].value);if(ans.size()==0 && num==0) printf("NA\n");}return 0;
}

1095 解码PAT准考证 (25分)相关推荐

  1. PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分)

    PAT (Basic Level) Practice (中文)1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即T代表顶级:A代表甲级:B代表乙级: 第 ...

  2. 【详解!思路清晰】1095 解码PAT准考证 (25分)

    立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范 ...

  3. 1095 解码PAT准考证 (25分)击破测试点3、4,50ms内通关

    1095 解码PAT准考证 (25分)测试点34用时低于35ms 前言 一.题目简介 二.原题内容 1. 设定 2. 输入格式 3. 输出格式 三.题目分析 1. 要求1分析 2. 要求2分析 3. ...

  4. 1095 解码PAT准考证

    1095 解码PAT准考证 题目: PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范围从 101 到 999: 第 5 ...

  5. 1095 解码PAT准考证 (25 分)

    PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范围从 101 到 999: 第 5~10 位是考试日期,格式为年.月. ...

  6. 1095 解码PAT准考证 (25 point(s)) - PAT乙级真题

    PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范围从 101 到 999: 第 5~10 位是考试日期,格式为年.月. ...

  7. PAT (Basic Level) 1095 解码PAT准考证(模拟+stl,好题)

    题目链接:点击查看 题目大意:给出n个学生的准考证号以及成绩,再给出m个查询,要求按照规则输出每一个查询 首先,准考证的构成也是有讲究的,每个准考证号由四部分组成: 第一位是级别,A代表甲级,B代表乙 ...

  8. PAT乙级095 解码PAT准考证

    1095 解码PAT准考证 (25 分) PAT 准考证号由 4 部分组成: 第 1 位是级别,即 T 代表顶级:A 代表甲级:B 代表乙级: 第 2~4 位是考场编号,范围从 101 到 999: ...

  9. 【PAT (Advanced Level) Practice】1093 Count PAT‘s (25 分)

    1093 Count PAT's (25 分) The string APPAPT contains two PAT's as substrings. The first one is formed ...

最新文章

  1. 拿下赌场新客户,但马斯克“超级隧道”何时才能颠覆地面交通?
  2. 构建一个LVS-DR模型的高性能集群,并实现Nginx、PHP、MySQL分离
  3. void *变量用法
  4. 国内勒索病毒疫情严重 每天十多万台电脑被感染
  5. 模拟命令行自动输入的HTML,HTML5 命令行界面仿真和自动打字动画
  6. python人脸识别训练模型_开源 | 基于Python的人脸识别:识别准确率高达99.38%!
  7. 杭电2012-素数判定(C)
  8. 计算属性的setter和getter
  9. 字符设备驱动程序——点亮、熄灭LED操作
  10. linux主题管理器,XFCE 主题管理器:一款单一的GUI主题管理器,更改任何XFCE主题(带预览)...
  11. linux crontab 详解
  12. python工资一般多少西安-Python面试经验分享——西安贝业思数据
  13. golang byte转string_golang面试题:怎么避免内存逃逸?
  14. hbase 预写日志_HDInsight HBase 加速写入现已正式发布
  15. 软件工程和项目管理的区别
  16. smali语法基础详解
  17. HTML知识-CSS部分
  18. 基于车牌形状和颜色的车牌定位
  19. swper_swipe和swiper的区别
  20. 【日常点滴016】python游戏库arcade结合Tiled map editor地图编辑器和Pymunk物理引擎制作游戏过程记录,并最终打包为exe文件

热门文章

  1. STM32工作笔记0095---MDK KEIL5宏定义报红叉
  2. 深度学习001---勾股定理
  3. 在多label 的代码里面添加augmentation功能遇到的问题
  4. linux mysql密码相关问题
  5. VC++ 6.0的一些使用技巧---IDE的使用
  6. 扫雷计算机教案,《扫雷游戏》教学设计
  7. java 内部类_java的内部类和静态内部类(嵌套类)
  8. session保存密码_年薪百万之路--第六十四天 Cookie操作与session操作
  9. armbian docker Chrome_Docker入门 - USTCINFO_QC
  10. linqto 多个关键字模糊查询_查询函数Choose、Lookup、Hlookup、Vlookup应用技巧解读