题意:输出谁是开门的谁是锁门的。
思路:模拟,数字比大小或者直接将时间存为字符串直接比较大小。
代码:
#include<iostream>
#include<string>
#include<algorithm>
#include<string.h>
using namespace std;
struct door {
char name[105];
int begin_hour,begin_minute,begin_second,end_hour,end_minute,end_second;
}p[105];
bool cmp1(door a, door b) {
if (a.begin_hour < b.begin_hour) {
return true;
}
else if(a.begin_hour == b.begin_hour) {
if (a.begin_minute < b.begin_minute)
return true;
else if(a.begin_minute == b.begin_minute){
if (a.begin_second < b.begin_second)
return true;
else
return false;
}
else return false;
}
else
{
return false;
}
}
bool cmp2(door a, door b) {
if (a.end_hour < b.end_hour) {
return true;
}
else if (a.end_hour == b.end_hour) {
if (a.end_minute < b.end_minute)
return true;
else if (a.end_minute == b.end_minute) {
if (a.end_second < b.end_second)
return true;
else
return false;
}
else return false;
}
else
{
return false;
}
}
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%s %d:%d:%d %d:%d:%d", p[i].name, &p[i].begin_hour, &p[i].begin_minute, &p[i].begin_second, &p[i].end_hour, &p[i].end_minute, &p[i].end_second);
}
sort(p, p + n, cmp1);
printf("%s", p[0].name);
printf(" ");
sort(p, p + n, cmp2);
printf("%s", p[n-1].name);
return 0;
}