//scanf("%s",temp.idnumber);//一开始这里写的是&temp.idnumber
//#define LOCAL
//后来一直是只有两个测试点可过,到底是为什么呢?
//原来是第一个时间是到的时间,是小的,第二个时间是走的时间,是大的,我输入存放的反了
#include<stdio.h>
//(后发现不需要)貌似要写两个结构体,一个是日期结构体,一个是签到记录结构体
//恩,想了一下,确实要两个结构体因为涉及到两个日期,也就是两个时,两个分,两个秒
//我去发现根本不要两个结构体,只要一个结构体,同一个记录的到的时间和走的时间,分两次输入就好,边输入边比较,边赋值给某个结果
//只要设置一个结构体,包括一个号码和一个时刻,
//因为本题可以完全看成是时刻表的最大最小值
struct Record{
char idnumber[20];
int hh,mm,ss;
}temp,ans1,ans2;
//如果结果为true ,则表示前一个比后一个大。如果是false,表示后一个大
bool great(Record r1,Record r2){
if(r1.hh!=r2.hh) return r1.hh>r2.hh;
if(r1.mm!=r2.mm) return r1.mm>r2.mm;
return r1.ss>r2.ss;
}
int main(){
//结构体变量学会全局地设置
#ifdef LOCAL
freopen("A1006data.in","r",stdin);
freopen("A1006data.out","w",stdout);
#endif
int n;
scanf("%d",&n);
//ans1是大的,ans2是小的
ans1.hh=24;
ans1.mm=60;
ans1.ss=60;
ans2.hh=0;//一开始这里居然设置成了13!,没认真看题目啊! 改了之后正确测试点从1个变成了3个
ans2.mm=0;
ans2.ss=0;
while(n--){
getchar();//本来打算把这个删掉的,结果删了之后正确的从3个测试点减为2个测试点
//scanf("%s",temp.idnumber);//一开始这里写的是&temp.idnumber
scanf("%s %d:%d:%d",temp.idnumber,&temp.hh,&temp.mm,&temp.ss);
if(great(temp,ans1)==false){
//第一次的,错!:如果temp比最大值大的话,那么把temp的内容作为最大值
//如果temp不比最小值大,那么最小值就是temop
ans1=temp;
}
scanf("%d:%d:%d",&temp.hh,&temp.mm,&temp.ss);
if(great(temp,ans2)){
//如果最大值比temp大,也就是temp比最小值还要小,那么就把temp的内容作为最小值
ans2=temp;
}
//最后要不要吸收空格
//getchar();
}
//所有的输入之后应该可以了
printf("%s %s\n",ans1.idnumber,ans2.idnumber);//这里后来前面的改掉了这里没有改,清晰的逻辑很重要吧
return 0;
}
//#define LOCAL
//后来一直是只有两个测试点可过,到底是为什么呢?
//原来是第一个时间是到的时间,是小的,第二个时间是走的时间,是大的,我输入存放的反了
#include<stdio.h>
//(后发现不需要)貌似要写两个结构体,一个是日期结构体,一个是签到记录结构体
//恩,想了一下,确实要两个结构体因为涉及到两个日期,也就是两个时,两个分,两个秒
//我去发现根本不要两个结构体,只要一个结构体,同一个记录的到的时间和走的时间,分两次输入就好,边输入边比较,边赋值给某个结果
//只要设置一个结构体,包括一个号码和一个时刻,
//因为本题可以完全看成是时刻表的最大最小值
struct Record{
char idnumber[20];
int hh,mm,ss;
}temp,ans1,ans2;
//如果结果为true ,则表示前一个比后一个大。如果是false,表示后一个大
bool great(Record r1,Record r2){
if(r1.hh!=r2.hh) return r1.hh>r2.hh;
if(r1.mm!=r2.mm) return r1.mm>r2.mm;
return r1.ss>r2.ss;
}
int main(){
//结构体变量学会全局地设置
#ifdef LOCAL
freopen("A1006data.in","r",stdin);
freopen("A1006data.out","w",stdout);
#endif
int n;
scanf("%d",&n);
//ans1是大的,ans2是小的
ans1.hh=24;
ans1.mm=60;
ans1.ss=60;
ans2.hh=0;//一开始这里居然设置成了13!,没认真看题目啊! 改了之后正确测试点从1个变成了3个
ans2.mm=0;
ans2.ss=0;
while(n--){
getchar();//本来打算把这个删掉的,结果删了之后正确的从3个测试点减为2个测试点
//scanf("%s",temp.idnumber);//一开始这里写的是&temp.idnumber
scanf("%s %d:%d:%d",temp.idnumber,&temp.hh,&temp.mm,&temp.ss);
if(great(temp,ans1)==false){
//第一次的,错!:如果temp比最大值大的话,那么把temp的内容作为最大值
//如果temp不比最小值大,那么最小值就是temop
ans1=temp;
}
scanf("%d:%d:%d",&temp.hh,&temp.mm,&temp.ss);
if(great(temp,ans2)){
//如果最大值比temp大,也就是temp比最小值还要小,那么就把temp的内容作为最小值
ans2=temp;
}
//最后要不要吸收空格
//getchar();
}
//所有的输入之后应该可以了
printf("%s %s\n",ans1.idnumber,ans2.idnumber);//这里后来前面的改掉了这里没有改,清晰的逻辑很重要吧
return 0;
}