1006 Sign In and Sign Out (25point(s)) Easy only once *cmp sort排序问题

基本思想:

1.使用类输入,构造成一个序列;

2.直接两次排序;

关键点:

注意sort和cmp的返回值和构造问题;

 1 #include<iostream>
 2 #include<stdlib.h>
 3 #include<stdio.h>
 4 #include<vector> 
 5 #include<string>
 6 #include<math.h>
 7 #include<algorithm>
 8 using namespace std;
 9 using std::vector;
10 struct student{
11     char id[16];
12     int sh;
13     int sm;
14     int ss;
15     int eh;
16     int em;
17     int es;
18 };
19 vector<student>vec;
20 bool flag = false;
21 bool cmp(student a, student b) {
22     if (flag) {
23         if (a.sh != b.sh)
24             return a.sh > b.sh;
25         else if (a.sm != b.sm)
26             return a.sm > b.sm;
27         else
28             return a.ss > b.ss;
29     }
30     else {
31         if (a.eh != b.eh)
32             return a.eh < b.eh;
33         else if (a.sm != b.sm)
34             return a.em < b.em;
35         else
36             return a.es < b.es;
37     }
38 }
39 
40 int main() {
41     int n;
42     scanf("%d", &n);
43     vec.resize(n);
44     //cout << n << endl;
45     for (int i = 0; i < n; i++) {
46         scanf("%s %d:%d:%d %d:%d:%d", vec[i].id, &vec[i].sh, &vec[i].sm, &vec[i].ss, &vec[i].eh, &vec[i].em, &vec[i].es);
47         //cout << "->" << vec[i].id << endl;
48     }
49     sort(vec.begin(), vec.end(), cmp);
50     printf("%s", vec[0].id);
51     flag = true;
52     sort(vec.begin(), vec.end(), cmp);
53     printf(" %s", vec[0].id);
54     system("pause");
55     return 0;
56 }

猜你喜欢

转载自www.cnblogs.com/songlinxuan/p/12188379.html
今日推荐