返回目录![在这里插入图片描述](https://img-blog.csdnimg.cn/2020032819541880.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExOTIwOTkzMTY1,size_16,color_FFFFFF,t_70)
题意
找出最早签到和最晚签离的人
注意点
- 没有人同时签到和签离
- 只需存储最早和最晚的id即可,不需要把所有输入进行保存
- 时间可以使用%d:%d:%d读入
#include <bits/stdc++.h>
using namespace std;
struct per{
char id[20];
int hh,mm,ss;
}tmp,ans1,ans2;
bool cmp(per a,per b){
if(a.hh!=b.hh)return a.hh<b.hh;
else if(a.mm!=b.mm)return a.mm<b.mm;
else return a.ss<b.ss;
}
int main(){
ans1.hh=25;
ans2.hh=-1;
int n;
scanf("%d",&n);
while(n--){
scanf("%s %d:%d:%d",tmp.id,&tmp.hh,&tmp.mm,&tmp.ss);
if(cmp(tmp,ans1))ans1=tmp;
scanf("%d:%d:%d",&tmp.hh,&tmp.mm,&tmp.ss);
if(cmp(ans2,tmp))ans2=tmp;
}
printf("%s %s\n",ans1.id,ans2.id);
return 0;
}