博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
L2-034 口罩发放 (25 分)
阅读量:1908 次
发布时间:2019-04-26

本文共 2555 字,大约阅读时间需要 8 分钟。

在这里插入图片描述

0 的不包含空格的非空字符串;身份证号 是一个长度不超过 20 的非空字符串;身体情况 是 0 或者 1,0 表示自觉良好,1 表示有相关症状;提交时间 是 hh:mm,为24小时时间(由 00:00 到 23:59。例如 09:08。)。注意,给定的记录的提交时间不一定有序;身份证号 各不相同,同一个身份证号被认为是同一个人,数据保证同一个身份证号姓名是相同的。能发放口罩的记录要求如下:身份证号 必须是 18 位的数字(可以包含前导0);同一个身份证号若在第 i 天申请成功,则接下来的 P 天不能再次申请。也就是说,若第 i 天申请成功,则等到第 i+P+1 天才能再次申请;在上面两条都符合的情况下,按照提交时间的先后顺序发放,直至全部记录处理完毕或 S​i​​  个名额用完。如果提交时间相同,则按照在列表中出现的先后顺序决定。输出格式:对于每一天的申请记录,每行输出一位得到口罩的人的姓名及身份证号,用一个空格隔开。顺序按照发放顺序确定。在输出完发放记录后,你还需要输出有合法记录的、身体状况为 1 的申请人的姓名及身份证号,用空格隔开。顺序按照申请记录中出现的顺序确定,同一个人只需要输出一次。输入样例:4 25 3A 123456789012345670 1 13:58B 123456789012345671 0 13:58C 12345678901234567 0 13:22D 123456789012345672 0 03:24C 123456789012345673 0 13:594 3A 123456789012345670 1 13:58E 123456789012345674 0 13:59C 123456789012345673 0 13:59F F 0 14:001 3E 123456789012345674 1 13:581 1A 123456789012345670 0 14:11输出样例:D 123456789012345672A 123456789012345670B 123456789012345671E 123456789012345674C 123456789012345673A 123456789012345670A 123456789012345670E 123456789012345674样例解释:输出中,第一行到第三行是第一天的部分;第四、五行是第二天的部分;第三天没有符合要求的市民;第六行是第四天的部分。最后两行按照出现顺序输出了可能存在身体不适的人员。作者DAI, Longao单位杭州百腾教育科技有限公司代码长度限制16 KB时间限制400 ms内存限制
#include
#include
#include
#include
using namespace std;const int MAXN=7000;//mp2作用是标记得到口罩的人,防止重复记录; //mp1作用是标记身体状况为1的人,防止重复记录; map
mp1,mp2;struct kouzhao{
string name,cardId,time; int status;//身体状况; int s;//记录提交的顺序; }stc1[MAXN],stc2[MAXN];//这里我原本定义了一个stc3,但是提交之后显示答案错误,所以我想应该是内存过高,导致时间超时,故我选择使用vector容器来保存结果;bool cmp(struct kouzhao s1,struct kouzhao s2){
if(s1.time==s2.time) return s1.s
v1,v2;int main(){ int d=0,p=0,i=0,j=0,k=0,b=1,c1=1; int t=0,s=0; cin>>d>>p; for(i=1;i<=d;i++) { cin>>t>>s; for(j=1;j<=t;j++) { cin>>stc1[j].name>>stc1[j].cardId>>stc1[j].status>>stc1[j].time; stc1[j].s=j;//记录提交的顺序; } //记录status==1合法的申请人信息,并防止重复记录; for(j=1;j<=t;j++) { //判断身份证号是否合法; int flag=0; if(stc1[j].cardId.length()!=18) continue; for(k=0;k
='0'&&stc1[j].cardId[k]<='9')) { flag = 1; break; } } if(flag==1) continue; //将status==1的申请人信息记录下来,最后输出; if(stc1[j].status==1&&mp1[stc1[j].cardId]==0) { mp1[stc1[j].cardId]=1;//防止出现重复的记录; stc2[b].name=stc1[j].name; stc2[b].cardId=stc1[j].cardId; b++; } } //记录得到口罩申请人的合法信息; int sum=0;//记录已发放多少口罩; sort(stc1+1,stc1+t+1,cmp); for(j=1;j<=t;j++) { //判断身份证号是否合法; int flag=0; if(stc1[j].cardId.length()!=18) continue; for(k=0;k
='0'&&stc1[j].cardId[k]<='9')) { flag=1; break; } } if(flag==1) continue; //记录得到口罩申请人合法的信息,前提是已发放的口罩还在发放口罩数量的范围之内; if(sum
::iterator it=v1.begin(); for(it;it!=v1.end();it++) { cout<<(*it).name<<' '<<(*it).cardId<

转载地址:http://mhvcf.baihongyu.com/

你可能感兴趣的文章
大数据分析技术与应用一站式学习(值得收藏)_v20200418
查看>>
ios开发手册_v20200718
查看>>
TortoiseGit客户端设置中文显示
查看>>
Qt 在windows下的串口读写
查看>>
Qt之输出日志
查看>>
Qt自定义界面把OpenGL绘制的图形显示在QT的ui界面上
查看>>
笔试大全_C++开发各大公司面试更新表_20200801
查看>>
兔云资讯_游戏研发工程师面试更新_20200801
查看>>
python用pymysql调用myslql数据库查询部分
查看>>
阿里云ecs centos7.4 不卸载python2的情况下安装python3 及踩过的的坑
查看>>
python 的 *args和 **kwargs 分别是什么意思
查看>>
MYSQL的一些操作,
查看>>
python的一些基础知识
查看>>
记录一下liunx的基本操作 后续更新系列
查看>>
python的with as用法
查看>>
centos7.4 安装sublime3
查看>>
centos7.6 安装mysql5.7
查看>>
centos 7.6图形化界面中文显示乱码的问题
查看>>
linux防火墙firewall详细讲解
查看>>
Linux 环境变量(详解)
查看>>