PAT1006 Sign In and Sign Out

题目:PAT甲级1006

 

题解:看起来是一道非常水的题,就先比小时,小时相等比分钟,分钟相等比秒数,这样一级一级比。

  然而这个思路写代码感觉有点麻烦..以至于被一些不知名的小错误折腾了好久...

  有空去看看有没有大佬写的思路简单的代码..

 

代码:

 1 #include<cstdio>
 2 #include<iostream>
 3 #define maxn 9999
 4 using namespace std;
 5 
 6 int n;
 7 string id[maxn],s_id,v_id;
 8 int hh[2][maxn],mm[2][maxn],ss[2][maxn],smin,vmax;
 9 
10 int main()
11 {
12     scanf("%d",&n);
13 
14     for(int i=0;i<n;i++)
15     {
16         cin>>id[i];
17         scanf("%d:%d:%d %d:%d:%d",&hh[0][i],&mm[0][i],&ss[0][i],&hh[1][i],&mm[1][i],&ss[1][i]);
18     }
19 
20 
21     bool f1=false;bool f2=false;//f1标记是否找到最早的时间,f2标记是否找到最晚的时间
22     for(int t=0;t<3&&!(f1&&f2);t++)
23     {
24         if(t==0){smin=hh[0][0];vmax=hh[1][0];s_id=id[0];v_id=id[0];}//进行初始化
25         else if(t==1){if(!f1) smin=mm[0][0];if(!f2) vmax=mm[1][0];}//如果没有找到最早或最晚的时间,对下一级初始化
26         else if(t==2){if(!f1) smin=ss[0][0];if(!f2) vmax=ss[1][0];}//同上
27 
28         for(int i=1;i<n;i++)
29         {
30             if(t==0)//比较小时
31             {
32                 if(hh[0][i]<smin)
33                 {
34                     smin=hh[0][i];
35                     s_id=id[i];
36                     f1=true;
37                 }
38                 if(hh[1][i]>vmax)
39                 {
40                     vmax=hh[1][i];
41                     v_id=id[i];
42                     f2=true;
43                 }
44             }
45             else if(t==1)//比较分钟
46             {
47                 if(mm[0][i]<smin&&!f1)
48                 {
49                     smin=mm[0][i];
50                     s_id=id[i];
51                     f1=true;
52                 }
53                 if(mm[1][i]>vmax&&!f2)
54                 {
55                     vmax=mm[1][i];
56                     v_id=id[i];
57                     f2=true;
58                 }
59             }
60             else if(t==2)//比较秒数
61             {
62                 if(ss[0][i]<smin&&!f1)
63                 {
64                     smin=ss[0][i];
65                     s_id=id[i];
66                     f1=true;
67                 }
68                 if(ss[1][i]>vmax&&!f2)
69                 {
70                     vmax=ss[1][i];
71                     v_id=id[i];
72                     f2=true;
73                 }
74             }
75 
76         }
77     }
78 
79     cout<<s_id<<" "<<v_id;
80 
81     return 0;
82 }

 

posted on 2017-02-27 13:45  RocSAMA  阅读(97)  评论(0)    收藏  举报