1006. Sign In and Sign Out (25)
题目易懂。用了个 结构体数组 的快排解决,虽然通过了,但感觉麻烦了。
# include <stdio.h>
# include <stdlib.h>
typedef struct stu
{
char name[20];
char in[10];
char out[10];
long intime;
long outtime;
}STU;
int cmp1(const void *a,const void *b)
{
return (*(STU *)a).intime > (*(STU *)b).intime ?1:-1;
}
int cmp2(const void *a,const void *b)
{
return (*(STU *)a).outtime < (*(STU *)b).outtime ?1:-1;
}
int main()
{
int M, i;
STU r[50];
scanf("%d",&M);
for(i = 0; i < M; i ++)
{
scanf("%s%s%s",r[i].name,r[i].in,r[i].out);
r[i].intime = (r[i].in[0]-'0')*100000 + (r[i].in[1]-'0')*10000 + (r[i].in[3]-'0')*1000
+ (r[i].in[4]-'0')*100 + (r[i].in[6]-'0')*10 +(r[i].in[7]-'0');
r[i].outtime = (r[i].out[0]-'0')*100000 + (r[i].out[1]-'0')*10000 + (r[i].out[3]-'0')*1000
+ (r[i].out[4]-'0')*100 + (r[i].out[6]-'0')*10 +(r[i].out[7]-'0');
}
qsort(r,M,sizeof(STU),cmp1);
printf("%s ",r[0].name);
qsort(r,M,sizeof(STU),cmp2);
printf("%s",r[0].name);
return 0;
}