1、使用sscanf,可节省对字符串的分割的代码
2、注意scanf读字符串时,是以空格和回车结尾的
3、将signIn和signOut时间转化成秒,然后一遍循环,找出signIn最小的id和signOut最大的id
#include <iostream>
#include <string>
#include <algorithm>
#include <stdio.h>
using namespace std;
struct Record{
char id[20];
int in;
int out;
};
struct Record records[100000];
char str[50];
int main()
{
int hi,mi,si,ho,mo,so,n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s",records[i].id);
scanf("%s",str);
sscanf(str,"%d:%d:%d",&hi,&mi,&si);
scanf("%s",str);
sscanf(str,"%d:%d:%d",&ho,&mo,&so);
records[i].in = hi*60*60+mi*60+si;
records[i].out = ho*60*60+mo*60+so;
}
int MIN,MAX;
MIN = MAX = 0;
for(int i=1;i<n;i++){
if(records[i].in < records[MIN].in){
MIN = i;
}
if(records[i].out > records[MAX].out){
MAX = i;
}
}
printf("%s %s\n",records[MIN].id,records[MAX].id);
return 0;
}