AcWing 1478. 签到与签出
原题链接
简单
作者:
小徐
,
2021-01-20 19:52:00
,
所有人可见
,
阅读 307
/*
本来这一题我是定义结构体,写了两个cmp函数分别求出最早到的人和最晚走的人,后来发现没有必要。
看了解析后,发现可以直接找到最早来的人和最晚走的人,不需要通过创建结构体来实现。
直接定义string类型的变量open_id和close_id以及open_time和close_time,
如果当前输入的信息的开门时间比open_time要小,则把这个人的id赋给open_id,时间也赋给open_time,
如果当前输入的信息的关门时间比close_time要大,则当前这个人的id就赋值给close_id。
至于时间怎么比较,因为输入的时间非常规则,所以可以直接按照字符串的字典序进行比较。
需要注意的是,要将最开始的变量open_id、open_time、close_id、close_time赋初值,这是一个重要的点。
所以在循环里i等于0的时候就需要赋初值给open_id、open_time、close_id、close_time
*/
#include "iostream"
using namespace std;
int main()
{
int m;
cin >> m;
string open_id, open_time, close_id, close_time;
for(int i = 0; i < m; i++)
{
string id, in_time, out_time;
cin >> id >> in_time >> out_time;
if(!i || in_time < open_time) //!i 表示i = 0 的时候,这需要赋初值
{
open_id = id;
open_time = in_time;
}
if(!i || out_time > close_time) //!i 表示i = 0 的时候,这需要赋初值
{
close_id = id;
close_time = out_time;
}
}
cout << open_id << ' ' << close_id;
return 0;
}