守门人的日常

题目描述

实验室的财产安全很重要,所以 , 坐在门口的大廖就负责登记一天的出入情况。

现给你一天的登记情况 ,试找出第一个进入的 id 和最后一个出去的 id。

输入

一次包含一组数据。

第1行为进入的人的个数 m

第2行到第m+1行为记录的情况

记录的格式如下 :ID_number Sign_in_time Sign_out_time

输出

输出第一个进入的 id , 和最后一个出去的 id

样例输入

3
CS301111 15:30:28 17:00:10
SC3021234 08:00:00 11:25:25
CS301133 21:45:00 21:58:40

样例输出

SC3021234 CS301133

分析:

这里的话,我们可以直接用一个结构体。然后分别将开始时间,结束时间排序,并分别输出。排序是要注意,先看时,如果相等,在看分钟。

int main()
{
    long long n,i,j,start[3],end[3],mid[3],mid1[3];
    char sign_in_time[100],sign_out_time[100],sign_start_time[100],sign_end_time[100];
    char ID[100],start1[100],end1[100];
    scanf("%lld",&n);
//    sign_start_time=0;
 //   sign_end_time=0;
    mid[0]=mid[1]=mid[2]=0;
    mid1[0]=mid1[1]=mid1[2]=0;
    start[0]=start[1]=start[2]=25;
    end[0]=end[1]=end[2]=0;
    while(n--)
    {
        scanf("%s",ID);
        scanf("%s",sign_in_time);
        scanf("%s",sign_out_time);
        mid[0]=(sign_in_time[0]-'0')*10+sign_in_time[1]-'0';
        mid[1]=(sign_in_time[3]-'0')*10+sign_in_time[4]-'0';
        mid[2]=(sign_in_time[6]-'0')*10+sign_in_time[7]-'0';
        if(mid[0]<start[0])
          {strcpy(start1,ID);start[0]=mid[0];start[1]=mid[1];start[2]=mid[2];}
        else
          if(mid[0]==start[0])
            if(mid[1]<start[1])
             {strcpy(start1,ID);start[0]=mid[0];start[1]=mid[1];start[2]=mid[2];}
            else
               if(mid[1]==start[1])
                 if(mid[2]<start[2])
                   {strcpy(start1,ID);start[0]=mid[0];start[1]=mid[1];start[2]=mid[2];}
       //上面为对最早进来的操作,下面是对最晚出去的操作
        mid1[0]=(sign_out_time[0]-'0')*10+sign_out_time[1]-'0';
        mid1[1]=(sign_out_time[3]-'0')*10+sign_out_time[4]-'0';
        mid1[2]=(sign_out_time[6]-'0')*10+sign_out_time[7]-'0';
        if(mid1[0]>end[0])
          {strcpy(end1,ID);end[0]=mid1[0];end[1]=mid1[1];end[2]=mid1[2];}
        else
          if(mid1[0]==end[0])
            if(mid1[1]<end[1])
             {strcpy(end1,ID);end[0]=mid1[0];end[1]=mid1[1];end[2]=mid1[2];}
            else
               if(mid1[1]==end[1])
                 if(mid1[2]<end[2])
                   {strcpy(end1,ID);end[0]=mid1[0];end[1]=mid1[1];end[2]=mid1[2];}


    }
    printf("%s %s\n",start1,end1);

}

猜你喜欢

转载自blog.csdn.net/qq_43506138/article/details/84964135
今日推荐