1006 Sign In and Sign Out (25 分)
题目链接:PAT A 1006
思路分析:这一题也很直接,就是找到开门的(第一个来的)和锁门的(最后一个走的)。利用字符串string是最方便的,因为string比较大小的规则是直接利用字母序。定义unlock,lock,unlocker,locker分别记录开门时间,锁门时间,开门的人,锁门的人。初始先将unlock定义为一天中最后的时间,lock定义为最早的时间,之后输入,一旦signin小于unlock,就同时更新unlock和unlocker,最后unlockr保存的就是开门人的id,locker同理~
AC代码:
#include<iostream>
using namespace std;
int main() {
string id, signin, signout, unlock = "23:59:59", lock = "00:00:00", unlocker, locker;
int m;
cin >> m;
for(int i = 0; i < m; i++) {
cin >> id >> signin >> signout;
if(signin < unlock) {
unlocker = id; //更新开门人id
unlock = signin; //更新开门时间
}
if(signout > lock) {
locker = id; //更新锁门人id
lock = signout; //更新锁门时间
}
}
cout << unlocker << " " << locker;
return 0;
}