A1006 Sign In and Sign Out 25分
题目描述:
题目大意:
给定一个总人数,在这些人数里边找出最早的人和最晚的人,输出他们的工号。
思路:
①:连接体信息,所以用结构体存储工号,时间。
②:因为需要比较时间,这里的时间有时、分、秒,不妨把写一个函数,当需要比较时间的时候调用该函数就好,好用又方便。
AC代码:
#include<cstdio>
struct node{
char num[20];
int h1,m1,s1,h2,m2,s2;
}e[100005],z,w;
bool cmp1(node a,node b)
{
if(a.h1!=b.h1) return a.h1<=b.h1;
else if(a.m1!=b.m1) return a.m1<=b.m1;
return a.s1<=b.s1;
}
bool cmp2(node a,node b)
{
if(a.h2!=b.h2) return a.h2>=b.h2;
else if(a.m2!=b.m2) return a.m2>=b.m2;
return a.s2>=b.s2;
}
int main()
{
int m;
z.h1=z.m1=z.s1=24;
w.h2=w.m2=w.s2=0;
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%s%d:%d:%d%d:%d:%d",e[i].num,&e[i].h1,&e[i].m1,&e[i].s1,&e[i].h2,&e[i].m2,&e[i].s2);
if(cmp1(e[i],z)) z=e[i];
if(cmp2(e[i],w)) w=e[i];
}
printf("%s %s",z.num,w.num);
return 0;
}