题目描述
每天第一个到机房的人负责开门,最后一个从机房离开的人负责锁门。
现在,给定每个人的签到与签出记录,请你找出当天开门的人以及锁门的人分别是谁。
输出格式
共一行,输出开门人和锁门人的ID_number,用一个空格隔开。
数据范围
样例
输入样例:
3
CS301111 15:30:28 17:00:10
SC3021234 08:00:00 11:25:25
CS301133 21:45:00 21:58:40
输出样例:
SC3021234 CS301133
算法1
1.设置一个open_id,close_id,用来记录最早进入的人和最晚出去的人的编号。
2.并设置相应的open_time,close_time,用来存储对应的最早时间和最晚时间,因为题目给出的时间的是以数字典的形式存储,所以可直接比较时间大小,不用转换成秒来比较。
3.遍历读入的进入时间和出去时间,先直接读入第一个人的进入时间和出去时间,然后再与后来者的进入时间和出去时间,进入时间比当前小的,就跟新其编号以及对应的进入时间,同理,更新出去最晚的编号以及时间。最后输出结果即可。
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
string open_id,open_time,close_time,close_id;
string id,in_time,out_time;
int n; cin>>n;
for(int i=0;i<n;i++)
{
cin>>id>>in_time>>out_time;
if(!i || in_time<open_time)
{
open_id=id;
open_time=in_time;
}
if(!i || out_time>close_time)
{
close_id=id;
close_time=out_time;
}
}
cout<<open_id<<" "<<close_id;
return 0;
}