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 }