时间可以分开处理,代码用了另一个很好的方法,把整个时间当成一个字符串,排序后处理。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iomanip>
using namespace std;
#define MAX 1000+10
struct Record{
char num[20];
char entertime[20];
char leavetime[20];
}records[MAX];
int cmp_en(const void *a, const void *b)
{
return strcmp( (*(Record*)a).entertime, (*(Record*)b).entertime );
}
int cmp_leave(const void *a, const void *b)
{
return strcmp( (*(Record*)b).leavetime, (*(Record*)a).leavetime );
}
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int n = 0;
cin >> n;
for (int i = 0; i < n; i++)
cin >> records[i].num >> records[i].entertime >> records[i].leavetime;
qsort(records, n, sizeof(records[0]), cmp_en);
cout << records[0].num << " ";
qsort(records, n, sizeof(records[0]), cmp_leave);
cout << records[0].num;
return 0;
}