1006 Sign In and Sign Out (25分)

17分代码(测试点1,3错误)

 1 #include<iostream>
 2 #include <vector>
 3 using namespace std;
 4 struct node
 5 {
 6     string num,arrive,leave;
 7 };
 8 int main()
 9 {
10     int k;
11     cin >> k;
12     vector<node> p(k);
13     string earliest="99:99:99",latest="00:00:00";
14     string id1,id2;
15     while(k--)
16     {
17         struct node *pn = new struct node;
18         cin >> pn->num >> pn->arrive >> pn->leave;
19         p.push_back(*pn);
20         if(pn->arrive <= earliest)
21         {
22             earliest = pn->arrive;
23             id1 = pn->num;
24         }
25         if(pn->leave >= latest)
26         {
27             latest = pn->arrive;
28             id2 = pn->num;
29         }
30     }
31     cout << id1 << ' ' << id2;
32     return 0;
33 

 

25分:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 struct node
 6 {
 7     char id[20];
 8     int h,m,s;
 9 }n1,n2;
10 bool greater_(node n1, node n2)//算法笔记这里有点妙
11 {
12     if(n1.h != n2.h) return n1.h > n2.h;
13     if(n1.m != n2.m)return n1.m > n2.m;
14     return n1.s > n2.s;
15 }
16 int main()
17 {
18     int k;
19     cin >> k;
20     struct node max_node{"",0,0,0}, min_node{"",24,60,60};
21     while(k--)
22     {
23         scanf("%s %d:%d:%d %d:%d:%d", n1.id, &n1.h, &n1.m, &n1.s,&n2.h,&n2.m,&n2.s);
24         strcpy(n2.id,n1.id);
25         if(greater_(n2,max_node))
26             max_node = n2;
27         if(!greater_(n1,min_node))
28             min_node = n1;
29     }
30     cout << min_node.id << " " << max_node.id;
31 }

 

posted @ 2020-06-20 17:30  幻想Elapse  阅读(153)  评论(0编辑  收藏  举报